【发布时间】:2017-07-04 05:42:37
【问题描述】:
我正在尝试编写一个脚本,该脚本对输入关键字执行 Google 搜索并仅返回前 10 个 URL 中的内容。
注意:内容特指搜索词所请求的内容,并在返回的 URL 的正文中找到。
我已经完成了搜索和前 10 个 url 检索部分。这是脚本:
from google import search
top_10_links = search(keyword, tld='com.in', lang='en',stop=10)
但是我无法从链接中检索仅内容不知道它们的结构。我可以通过查找特定站点的类等来从特定站点中抓取内容使用开发工具的标签。但我无法弄清楚如何从前 10 个结果 URL 中获取内容,因为每个搜索词都有不同的 URL(不同的站点有不同的 css 选择器),而且很难找到 css 类所需的内容。这是从特定站点提取内容的示例代码。
content_dict = {}
i = 1
for page in links:
print(i, ' @ link: ', page)
article_html = get_page(page)#get_page() returns page's html
soup = BeautifulSoup(article_html, 'lxml')
content = soup.find('div',{'class': 'entry-content'}).get_text()
content_dict[page] = content
i += 1
但是,不同站点的 css 类会发生变化。有没有办法让这个脚本工作并获得所需的内容?
【问题讨论】:
-
在很多情况下,您想要的内容是网页中最内层的文本,即它不包含更多的标签。您可以在
BeautifulSoup的帮助下编写代码,也许还可以使用正则表达式来从网页中获取最里面的文本,无论其设计如何,但这不会很有条理(您也可以获得不必要的文本)。 -
@Sam :) 我试过了,但得到的结果和你说的一样。我也得到了内容和乱码。有没有办法摆脱它
-
也许不是。 @pythad 是正确的。不了解页面结构就无法进行抓取。
标签: python html web beautifulsoup screen-scraping