使用Scrapy来爬取自己的CSDN文章 (2)
2015-05-22 00:00
225 查看
前言
前面讲到只是爬取了title和url,那么怎么爬取文章,其实原理是一样的。过程
保存文章内容的Item
我们在item.py中添加一项,如下:
class CsdnArticleItem(Item): title = Field() article = Field() pass
我们保存文章的题目和内容。
分析文章的链接
csdn是怎么来保存一篇文章的,我们来看一个url:http://blog.csdn.net/zhx6044/article/details/45698535
http://blog.csdn.net是域名。
zhx6044是作者。
article/details是固定的,那么只是最后的数字不同,所以数字用来索引一篇文章。
更新我们的爬虫
在csdn_crawler.py中的
CsdnCrawlerSpider的
rules中添加一个对于文章内容的爬取规则,如下:
rules = ( Rule(LinkExtractor(allow=r'article/list/[0-9]{1,20}'), callback='parse_item', follow=True), Rule(LinkExtractor(allow=r'article/details/[0-9]{1,20}'), callback='parse_article', follow=True), )
然后我们实现一个其处理这个规则链接内容的回调函数。如下:
def parse_article(self, response): i = CsdnArticleItem() i['title'] = response.xpath('//*[@id="article_details"]/div[1]/h1/span/a/text()').extract() i['article'] = response.xpath('//*[@id="article_content"]').extract() return i
使用的还是Chromium浏览器的Copy XPath功能。
在提取文章内容时不好处理,为了实现更好的页面表现效果,其中实现比较复杂,我不能值爬取文字内容,所以现在只能连样式一起爬下来。
这样添加之后,我们的爬虫就可是运行了。
结果
这是其中的一些运行log:2015-05-16 14:35:51+0800 [csdn_crawler] DEBUG: Filtered duplicate request: <GET http://blog.csdn.net/zhx6044/article/list/3> - no more duplicates will be shown (see DUPEFILTER_DEBUG to show all duplicates) 2015-05-16 14:35:57+0800 [csdn_crawler] DEBUG: Crawled (200) <GET http://blog.csdn.net/zhx6044/article/details/45649045> (referer: http://blog.csdn.net/zhx6044) 2015-05-16 14:35:57+0800 [csdn_crawler] DEBUG: Article add to mongodb database!
其可以看到其爬取了
http://blog.csdn.net/zhx6044/article/details/45649045这篇文章。
大家需要注意的是,这个爬虫虽然是从你的blog开始爬取,但是你的博客页面中还会包含其它人的链接,比如在推荐文章这一栏,如图:
这是你可以在添加爬取规则时添加上限制,比如:
Rule(LinkExtractor(allow=r'zhx6044/article/details/[0-9]{1,20}'), callback='parse_article', follow=True),
就可以了,不然你会发现你的爬虫根本停不下来。
这是我爬取到的数据,文章内容有点乱。
相关文章推荐
- 使用Scrapy来爬取自己的CSDN文章 (2)
- 使用Scrapy来爬取自己的CSDN文章 (2)
- 使用Scrapy来爬取自己的CSDN文章 (2)
- 使用Scrapy来爬取自己的CSDN文章
- 使用Scrapy来爬取自己的CSDN文章 (2)
- 使用Scrapy来爬取自己的CSDN文章 (2)
- 使用Scrapy来爬取自己的CSDN文章 (2)
- 使用Scrapy来爬取自己的CSDN文章
- Scrapy 探索:使用 Scrapy 爬取自己的 CSDN 博客
- 使用scrapy中crawlspider爬取csdn文章
- 使用Scrapy爬取CSDN博客首页文章
- 学以致用-使用Spotfire分析自己的CSDN文章列表
- 如何使用Firefox ScribeFire发布CSDN的博客文章?
- windows下使用python的scrapy爬虫框架,爬取个人博客文章内容信息
- 使用WebMagic爬CSDN上的文章
- 离线发布bolg----使用Windows live writer客户端来发布CSDN的博客文章
- 学以致用——使用Spotfire汇总分析截至目前的CSDN文章概要信息
- 使用TDD方式开发:根据博客ID列出CSDN所有博客文章
- (背包)剪辑的别人写的背包文章,转到自己博客上供以后学习使用
- 使用了博客园的备份后得到一个xml文件,不知道有没有css或者xslt文件可以在本地阅读文章,在网上找了半天也没有找到解决办法,难道要自己写?