在爬取"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, 能否通过分析查询接口的方式解决?
谢谢
可能這個頁面,你要抓的這個數據,是頁面載入後,使用js渲染出來的。也就是說,這個#full_DoctorSpecialize
裡面的資料是ajax,從伺服器拿回來的。具體要如何拿這樣的數據,你可以百度下 phantomjs ,你一定會 有收穫 的。
這2個資訊可以直接獲取,只是資訊包含在JS塊中BigPipe.onPageletArrive({
这个里面
}) , 可以通过正则表达式获取。这个里面
是一段JSON格式的字符串。匹配之後轉換為json還是很容易處理的。想要透過查詢接口獲取的話,應該是可以的,不過得分析JS程式碼,這個太麻煩,可以透過抓包工具來抓它的http請求。這個就像樓上說的是js渲染的,內容在js程式碼裡面,可以正規匹配js程式碼裡面的元素,得到你想要的資訊