python - 請教這個頁面中的這兩個信息能否不用無頭瀏覽器爬取到?
問題描述
在爬取'http://www.haodf.com/doctor/DE4r08xQdKSLBVM8i9sHYQ8uQGIO.htm'這個頁面的時候, 發(fā)現(xiàn)'擅長'和'執(zhí)業(yè)經歷'這兩個信息通過beautifulsoup是取不到的, 我選取這兩個信息的代碼如下:
soup.select(’#full_DoctorSpecialize’).get_text(strip=True)soup.select(’#full’).get_text(strip=True)
查詢頁面發(fā)現(xiàn)這兩個信息好像是通過JS查詢的結果, 除了把網頁全部正則表達式匹配的方法, 請教各位: 1, 這兩個信息能否直接取到? 2, 除了類似'Selenium'這樣的工具, 是否還有其他方式能夠取到這兩個信息?3, 能否通過分析查詢接口的方式解決?
謝謝
問題解答
回答1:可能這個頁面,你要抓的這個數(shù)據(jù),是頁面加載后,使用js渲染出來的。也就是說,這個#full_DoctorSpecialize里面的數(shù)據(jù)是ajax,從服務器上拿回來的。具體要如何拿這樣的數(shù)據(jù),你可以百度下 phantomjs ,你一定會 有收獲 的。
回答2:這2個信息可以直接獲取,只是信息包含在JS塊中BigPipe.onPageletArrive({這個里面}) , 可以通過正則表達式獲取。這個里面是一段JSON格式的字符串。匹配之后轉換為json還是很容易處理的。想要通過查詢接口獲取的話,應該是可以的,不過得分析JS代碼,這個太麻煩,可以通過抓包工具來抓它的http請求。然后看看是那個請求返回的數(shù)據(jù)。相比較而言還是寫正則匹配比較快。
回答3:這個就像樓上說的是js渲染的,內容在js代碼里面,可以正則匹配js代碼里面的元素,得到你想要的信息
相關文章:
1. docker-compose中volumes的問題2. boot2docker無法啟動3. 關docker hub上有些鏡像的tag被標記““This image has vulnerabilities””4. nignx - docker內nginx 80端口被占用5. java - SSH框架中寫分頁時service層中不能注入分頁類6. docker安裝后出現(xiàn)Cannot connect to the Docker daemon.7. javascript - mock.js可以存儲數(shù)據(jù)嗎8. golang - 用IDE看docker源碼時的小問題9. docker api 開發(fā)的端口怎么獲取?10. dockerfile - 為什么docker容器啟動不了?

網公網安備