我试图从搜索结果中删除一些URL,并尝试将Cookie设置或用户代理包含为Mozilla/5.0等等。我仍然无法从搜索结果中获取任何URL。有什么解决办法可以让它工作吗
from bs4 import BeautifulSoup
import requests
monitored_tickers = ['GME', 'TSLA', 'BTC']
def search_for_stock_news_urls(ticker):
search_url = "https://www.google.com/search?q=yahoo+finance+{}&tbm=nws".format(ticker)
r = requests.get(search_url)
soup = BeautifulSoup(r.text, 'html.parser')
atags = soup.find_all('a')
hrefs = [link['href'] for link in atags]
return hrefs
raw_urls = {ticker:search_for_stock_news_urls(ticker) for ticker in monitored_tickers}
raw_urls
谷歌新闻可以用
requests
和beautifulsoup
轻松浏览。使用user-agent
从那里提取数据就足够了签出SelectorGadgetChrome扩展,通过单击要提取的元素直观地获取
CSS
选择器如果您只想从谷歌新闻中提取URL,那么它就简单到:
代码和example that scrape more in the online IDE:
或者,您可以使用SerpApi中的Google News Results API来实现相同的结果。这是一个免费的付费API
不同之处在于,您不必弄清楚如何提取元素,随着时间的推移维护解析器,绕过Google的块
要集成的代码:
顺便说一下,我写了一篇blog post关于如何通过视觉表现更详细地抓取谷歌新闻(包括分页)
您可能会遇到这样一个问题,即请求和bs4可能不是您试图实现的目标的最佳工具。正如巴尔德曼在另一篇评论中所说,使用谷歌搜索api将更容易
此代码:
将列出每个股票代码在谷歌上排名前25位的链接,并将该列表附加到另一个列表中。Yahoo finance肯定会在链接列表中,一个基于关键字的简单解析器将获得特定股票代码的Yahoo finance url。您还可以根据自己的意愿调整search()函数中的搜索条件,例如ticker+“yahoo finance”
相关问题 更多 >
编程相关推荐