页面内容随每个请求而改变

时间:2019-07-10 14:36:52

标签: python pandas web-scraping beautifulsoup

我正试图从存储有关法国公司的各种信息的网站上抓取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)

我希望获得与在浏览器中打开链接时相同的表。

1 个答案:

答案 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)