python - 请教这个页面中的这两个信息能否不用无头浏览器爬取到?
巴扎黑
巴扎黑 2017-04-18 10:18:55
0
3
572

在爬取"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, 能否通过分析查询接口的方式解决?

谢谢

巴扎黑
巴扎黑

répondre à tous(3)
洪涛

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.

洪涛

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.

刘奇

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

.
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal