我正在尝试从网站提取数据,并且数据在表中:
url=requests.get("xxxxx")
soup =BeautifulSoup(url.content)
table=soup.find_all("table")[0]
rows = table.find_all('tr')
我尝试了此代码,但仅提取了42行,并且源表包含220行? 有人告诉我该如何解决。
答案 0 :(得分:1)
欢迎。
2种可能性。 Javascript或网站安全。
requests
与javscript无关,并且不执行任何javascript代码。您将需要一个无头的浏览器解决方案(selenium
很流行),它可以更接近于浏览器,尤其是在使用javascript时。
许多网站都不想被抓取,并采用了不同的方法来阻止它。最简单的形式是检查客户端的User-Agent
值(您的Python
脚本)或速率限制(每秒20k刷新不是人工的)。例如,如果User-Agent
是known value以外的任何其他字符,则其行为会有所不同(数据很少或没有)。其他形式的防御更为复杂。例如尝试在“浏览器”上播放音频或轮询“浏览器”的分辨率。为此,您需要调查网站的行为。这可能需要一些时间。您可以从浏览器开发工具的Networking
标签(在Firefox中为F12)开始,或者从Zap Proxy开始,以获得更精细的控制。