使用python和BeautifulSoup进行网络抓取

时间:2020-04-25 16:10:28

标签: python web-scraping html-table beautifulsoup web-crawler

我正在尝试从网站提取数据,并且数据在表中:

url=requests.get("xxxxx")
soup =BeautifulSoup(url.content)
table=soup.find_all("table")[0]
rows = table.find_all('tr')

我尝试了此代码,但仅提取了42行,并且源表包含220行? 有人告诉我该如何解决。

1 个答案:

答案 0 :(得分:1)

欢迎。
2种可能性。 Javascript或网站安全。

requests与javscript无关,并且不执行任何javascript代码。您将需要一个无头的浏览器解决方案(selenium很流行),它可以更接近于浏览器,尤其是在使用javascript时。

许多网站都不想被抓取,并采用了不同的方法来阻止它。最简单的形式是检查客户端的User-Agent值(您的Python脚本)或速率限制(每秒20k刷新不是人工的)。例如,如果User-Agentknown value以外的任何其他字符,则其行为会有所不同(数据很少或没有)。其他形式的防御更为复杂。例如尝试在“浏览器”上播放音频或轮询“浏览器”的分辨率。为此,您需要调查网站的行为。这可能需要一些时间。您可以从浏览器开发工具的Networking标签(在Firefox中为F12)开始,或者从Zap Proxy开始,以获得更精细的控制。