我正试图从存储有关法国公司的各种信息的网站上抓取HTML页面。但是,每次我通过pd.read_html发送请求(仅提取表)时,都会得到不同的结果。
为说明我的观点,您将找到一些要重现的代码:
result = []
for i in range(0,10):
result.extend(pd.read_html('https://www.societe.com/societe/eram-388583239.html', encoding='utf-8',attrs={'id':'rensjur'}))
time.sleep(5)
print(result)
我希望获得与在浏览器中打开链接时相同的表。
答案 0 :(得分:2)
玩了几分钟后,我发现更改用户代理会有所帮助。我的猜测是,当网站检测到不是Web浏览器的用户代理时,该网站就会混淆真实数据。
我敢肯定有一种更优雅的方法,但是这是我使用的代码,每次都会提取相同的数据:
import pandas as pd
import time
import urllib.request as request
results = []
for i in range(0,10):
url = 'https://www.societe.com/societe/eram-388583239.html'
opener = request.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
response = opener.open(url)
result = pd.read_html(response.read(), encoding='utf-8',attrs={'id':'rensjur'})
print(result)
results.extend(result)
time.sleep(5)
print(results)