从Google财经抓取网页:返回的数据列表始终为空

时间:2019-06-22 23:21:11

标签: python web-scraping beautifulsoup

我想使用Python的BeautifulSoup库从Google财经中抓取数据(例如,市值,市盈率等)。但是,当我尝试使用“ find_all”功能从相应Google财经网站的html代码中提取某些段落(例如“ div”,“ tr”,“ td”)时,我总是收到一个空列表(即,则下面代码中的“基本”对象为空)。

在调试过程中,我打印了“汤”对象,并将其内容与相应的html代码进行了比较。令我惊讶的是,“汤”对象的内容与html代码的内容不同。我希望两者都应该匹配才能成功提取数据。

from bs4 import BeautifulSoup
import urllib.request

opener = urllib.request.build_opener()
opener.addheaders = [('User-Agent', 'Mozilla/5.0')]
response = opener.open('https://www.google.com/search?q=NASDAQ:GOOGL')

soup = BeautifulSoup(response, 'html.parser')
base = soup.find_all('div',{'class':'ZSM8k'})

print(soup)
print(base)

1 个答案:

答案 0 :(得分:0)

它完全为服务器提供什么内容完全取决于服务器,因此,您可以做的最好的事情就是确保您的请求尽可能看起来像浏览器发送的请求。就您而言,这可能意味着:

opener.addheaders = [('User-Agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.90 Safari/537.36')]

如果我没记错的话,这将为您提供想要的东西。如果需要,您可以尝试通过反复尝试删除不相关的部分。