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

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

谢谢

巴扎黑
巴扎黑

全員に返信(3)
洪涛

おそらくこのページでは、キャプチャしたいデータは、ページが読み込まれた後に js を使用してレンダリングされます。つまり、この #full_DoctorSpecialize
のデータはサーバーから取得された ajax です。そのようなデータを具体的にどのように取得するかというと、Baidu から phantomjs をダウンロードすると、必ず何かが得られます。

いいねを押す +0
洪涛

この2つの情報は直接取得することもできますが、JSブロックBigPipe.onPageletArrive({这个里面}) , 可以通过正则表达式获取。这个里面はJSON形式の文字列です。マッチング後、簡単にjsonに変換できます。取得したい場合は、クエリ インターフェイスを使用することは可能ですが、JS コードを分析する必要があるため、パケット キャプチャ ツールを使用して http リクエストをキャプチャし、リクエストによって返されたデータを比較することができます。 、通常の一致を作成する方が高速です。

いいねを押す +0
刘奇

これは、js によってレンダリングされる上記のようなものです。コンテンツは js コード内にあり、必要な情報を取得するために、js コード内の要素を定期的に照合できます。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート