【问题标题】:Python web scraping: websites from google search resultPython网页抓取:来自谷歌搜索结果的网站
【发布时间】:2021-06-27 00:07:03
【问题描述】:

这里是 Python 的新手。我想从谷歌搜索页面中提取多个网站(例如 100+)的信息。我只想提取关键信息,例如那些带有<h1><h2><b><li> HTML 标签等的人。但我不想提取整个段落<p>

我知道如何从该 google 搜索中收集网站 URL 列表;而且我知道如何在查看页面的 HTML 后对单个网站进行网页抓取。我使用 Request 和 BeautifulSoup 来完成这些任务。

但是,我想知道如何从所有这些(100 多个!)网站中提取关键信息,而不必一一查看它们的 html。有没有办法自动找出网站用来强调关键信息的 HTML 标签?例如有些网站可能会使用<h1>,而有些网站可能会使用<b>,或者其他...

我能想到的只是列出可能的“强调类型”HTML 标签,然后使用 BeautifulSoup.find_all() 进行大规模提取。但肯定有更简单的方法吗?

【问题讨论】:

  • 据我了解您想要打开每个链接,首先我建议使用检查元素并找出这些链接所在的标签。如果我用谷歌搜索 how to share a song on instagram story from spotify 我正在查看的链接被称为 All the Ways to Share Your Songs on Socials From Spotify ...它的标签为 <a href> 以获取所有链接,我会做这样的事情。 soup = BeautifulSoup(open(DATA_PATH + "SERACH", encoding='utf-8'), "html.parser") 启动一个 for 循环,在 soup.select(THAT TAG) 中查找链接
  • 感谢您的评论;是的,我知道如何使用检查元素;麻烦的是我不想从我的谷歌搜索结果列表中为每个网站做这个检查部分。那么,我的问题是有一种自动的方法来执行此步骤,即找出用作不同网站重点的 html 标签?

标签: python html web-scraping web-crawler google-crawlers


【解决方案1】:

看来你必须先学会如何做循环和函数。每个网站都是完全不同的,单独抓取一个网站来提取有用的信息是令人生畏的。我自己是新手,但如果我必须从像你这样的标题中提取信息,我会这样做:(这只是概念代码,但希望你会发现它有用)

def getLinks(articleUrl):
 html = urlopen('http://en.web.com{}'.format(articleUrl))
 bs = BeautifulSoup(html, 'html.parser')
 return bs.find('h1', {'class':'header'}).find_all('h1',
 header=re.compile('^(/web/)((?!:).)*$'))

【讨论】:

  • 感谢您的回答。我知道如何抓取每个 individual 网站并使用 for 循环从网站列表中挖掘信息。这里的问题是我不知道每个不同的网站使用什么标签。所以,例如网站#1 可以使用“h1”标签来标记重要内容;而网站#2使用'b'标签,网站#3使用'i'标签等。我可以一个一个检查网站的元素,看看他们使用哪个标签来获取他们网站中的重要信息;但是有没有自动的方法来完成这一步?
猜你喜欢
  • 2021-01-17
  • 1970-01-01
  • 2020-05-03
  • 2019-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-19
  • 1970-01-01
相关资源
最近更新 更多