@href').extract()
for article_url in article_urls:
yield Request(base_url + article_url, callback=self.parse_article)
def parse_article(self, response):
"""解析文章内容"""
title = response.selector.xpath('//div[@class="title"]/h1/text()').extract()[0]
content = response.selector.xpath('//div[@id="content"]').extract()[0]
tags = ','.join(response.selector.xpath('//div[@class="tags mt10"]/a/text()').extract())
results = db.query('select count(0) as total from articles where origin=$origin', vars = { 'origin': response.url })
if results[0].total <= 0:
db.insert('articles',
title=title,
origin=response.url,
content=content,
add_date=int(time.time()),
hits=0,
tags=tags
)
安装Scrapy后以上代码通过以下命令执行:
scrapy runspider jb51_spider.py
本次运行后的效果在数据库中可以见如下图所示:
Github地址
###总结
本篇文章我们主要了解了基本的Scrapy Spider部分,而且通过对目标网站的结构分析使用xpath进行内容的提取,以及分页的处理。这里我们的目的是建立一种写爬虫的思路,而不在于怎么使用工具来爬数据。首先确定目标,然后分析目标,再借助现有工具进行内容提取,提取内容的过程中会遇到各种问题,这个时候我们再来逐个解决这些问题,直到我们的爬虫能够无障碍的运行。接下来我会使用Scrapy更多的功能将继续探索Item的定义,Pipeline的实现以及如何使用代理。
特别申明:本文所提到的脚本之家网站只是拿来进行爬虫的技术交流学习,读者涉及到的所有侵权问题都与本人无关,也希望大家在学习实战的过程中不要大量的爬取内容对服务器造成负担
本文首发在sudo rm -rf 转载请注明原作者