如何使用Python一般地抓取不同的网站?

时间:2016-07-11 07:59:00

标签: python-3.x beautifulsoup web-crawler

我想从任何文章中提取Dawn.com以及Tribune.com的评论。

我提取评论的方式是,在类别=&#34;内容&#34;上定位Dawn上的课程<div class="comment__body cf">。在Tribune.com上

我怎么能一般地做到这一点?它的意思是, 这些网站上没有类似的模式可以通过一个类来实现。

我应该为每个网站编写单独的代码吗?

1 个答案:

答案 0 :(得分:0)

编写一种通常可以从网站或其他东西中获取所需内容的算法并不容易。因为,正如你所提到的,这里没有任何模式。有些人可以在那里放置他的网站的评论,并给它一个类名commentssite_comments或其他什么,有些人可以把它放在这里并给它另一个类名等等等等。所以我认为你需要找出类名或任何你想要选择废弃网站内容的内容。

然而,在您的情况下,如果您不想为它们编写单独的代码,我认为您可以使用BeautifulSoup's正则表达式功能。

例如,您可以执行以下操作:

from bs4 import BeautifulSoup
import requests

site_urls = [first_site, second_site]
for site in site_urls:
    # this is just an example and in real life situations 
    # you should do some error checking
    site_content = requests.get(site)
    soup = BeautifulSoup(site_content, 'html5lib')
    # this is the list of html tags with the current site's comments 
    # and you can do whatever you want with them
    comments = soup.find_all(class_=re.compile("(comment)|(content)"))

他们有一个非常好的documentation here。你应该检查一下。