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, 能否通过分析查询接口的方式解决?
谢谢
问题解答
回答1:可能这个页面,你要抓的这个数据,是页面加载后,使用js渲染出来的。也就是说,这个#full_DoctorSpecialize里面的数据是ajax,从服务器上拿回来的。具体要如何拿这样的数据,你可以百度下 phantomjs ,你一定会 有收获 的。
回答2:这2个信息可以直接获取,只是信息包含在JS块中BigPipe.onPageletArrive({这个里面}) , 可以通过正则表达式获取。这个里面是一段JSON格式的字符串。匹配之后转换为json还是很容易处理的。想要通过查询接口获取的话,应该是可以的,不过得分析JS代码,这个太麻烦,可以通过抓包工具来抓它的http请求。然后看看是那个请求返回的数据。相比较而言还是写正则匹配比较快。
回答3:这个就像楼上说的是js渲染的,内容在js代码里面,可以正则匹配js代码里面的元素,得到你想要的信息
相关文章:
1. 为什么我ping不通我的docker容器呢???2. mac里的docker如何命令行开启呢?3. java - xml 传输数据如何处理更好4. javascript - h5上的手机号默认没有识别5. python - 类 对象 函数后面的参数问题,勉强看懂但是要自己写出来就感觉很困难6. javascript - 想让图片上那个块,在增加块的宽度的时候向右边移动,而不是向左边移动。需要怎么解决?7. mysql - 要取出数据库中按某字段排序后的前10,20,30条数据要怎么做?8. 求大神帮我看看是哪里写错了 感谢细心解答9. Python Selenium WebDriver如何刷新当前页面10. 用tp5框架写sql语句

网公网安备