我正在使用Scrapy抓取网站,但我想知道是否有办法将其设置为仅抓取网站的博客帖子(即非网页)?我可能会为每个站点创建特定的规则以使其工作,但如果我需要抓取多个站点,那将非常耗时。有没有办法让一个爬虫在所有网站上普遍运行,只抓取博客帖子?我对此表示怀疑,但是我的手指交叉了一些天才对此有了答案。
这是我迄今为止从Scrapy文档中提取的基本代码。我需要添加什么来使其工作?
from scrapy.contrib.spiders import CrawlSpider
class MySpider(CrawlSpider):
name = 'crawlit'
allowed_domains = ['example.com']
start_urls = ['http://www.example.com']
def parse_item(self, response):
#do something
P.S。我想过只提取RSS提要,但RSS提要仅显示最近的帖子 - 这意味着我无法获得比特定日期更早的帖子。除非有人知道解决方法吗?
答案 0 :(得分:0)
您可以使用python-readability之类的图书馆从指定网址中提取所有文章文字,以使其成为“博文”
from readability.readability import Document
def parse_url(self, response):
html = response.body
readable_article = Document(html).summary()
readable_title = Document(html).short_title()
如果您只想要网站上的文章,可能值得检查该网站是否有RSS源?