Maison  >  Questions et réponses  >  le corps du texte

python - 请教这个页面中的这两个信息能否不用无头浏览器爬取到?

在爬取"http://www.haodf.com/doctor/DE4r08xQdKSLBVM8i9sHYQ8uQGIO.htm"这个页面的时候, 发现"擅长"和"执业经历"这两个信息通过beautifulsoup是取不到的, 我选取这两个信息的代码如下:

soup.select('#full_DoctorSpecialize').get_text(strip=True)
soup.select('#full').get_text(strip=True)

查询页面发现这两个信息好像是通过JS查询的结果, 除了把网页全部正则表达式匹配的方法, 请教各位:
1, 这两个信息能否直接取到?
2, 除了类似"Selenium"这样的工具, 是否还有其他方式能够取到这两个信息?
3, 能否通过分析查询接口的方式解决?

谢谢

巴扎黑巴扎黑2740 Il y a quelques jours534

répondre à tous(3)je répondrai

  • PHP中文网

    PHP中文网2017-04-18 10:20:55

    Peut-être que sur cette page, les données que vous souhaitez capturer sont rendues à l'aide de js après le chargement de la page. En d'autres termes, les données de ce #full_DoctorSpecialize
    sont ajax et sont récupérées du serveur. Plus précisément, pour obtenir de telles données, vous pouvez télécharger phantomjs depuis Baidu et vous gagnerez certainement quelque chose.

    répondre
    0
  • PHP中文网

    PHP中文网2017-04-18 10:20:55

    Ces deux informations peuvent être obtenues directement, mais les informations sont contenues dans le bloc JS BigPipe.onPageletArrive({这个里面}) et peuvent être obtenues via des expressions régulières. 这个里面 est une chaîne au format JSON. La conversion en json après la correspondance est facile à traiter. Si vous souhaitez l'obtenir via l'interface de requête, cela devrait être possible, mais vous devez analyser le code JS, ce qui est trop fastidieux. Vous pouvez utiliser un outil de capture de paquets pour capturer sa requête http. Regardez ensuite les données renvoyées par cette requête. En comparaison, il est plus rapide d’écrire une correspondance régulière.

    répondre
    0
  • 怪我咯

    怪我咯2017-04-18 10:20:55

    Il s'agit d'un rendu JS comme mentionné ci-dessus. Le contenu est dans le code JS. Vous pouvez régulièrement faire correspondre les éléments du code JS pour obtenir les informations souhaitées

    .

    répondre
    0
  • Annulerrépondre