博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用Scrapy来爬取自己的CSDN文章 (2)
阅读量:6833 次
发布时间:2019-06-26

本文共 1765 字,大约阅读时间需要 5 分钟。

hot3.png

前言

前面讲到只是爬取了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中的CsdnCrawlerSpiderrules中添加一个对于文章内容的爬取规则,如下:

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: 
- 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)
(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),
就可以了,不然你会发现你的爬虫根本停不下来。

这是我爬取到的数据,文章内容有点乱。

这里写图片描述

转载于:https://my.oschina.net/u/854744/blog/418400

你可能感兴趣的文章
Office365混合部署之用户权限(角色)分配
查看>>
logback配置
查看>>
rhel6配置多用户tiger vnc server
查看>>
Mac环境下svn的使用
查看>>
Pig读写HBase数据
查看>>
NumPy基础(一)
查看>>
菜鸟学Linux 第104篇笔记 varnish
查看>>
ATEN宏正盛装出席Infocomm China 2016
查看>>
并发数/QPS/PV/ 服务器响应时间公示
查看>>
我的友情链接
查看>>
RHEL5下安装oracle10g的完整过程
查看>>
Linux之sort的用法
查看>>
log4j存储日志,日志和错误日志单独处理
查看>>
我的友情链接
查看>>
mysql的key和index
查看>>
我的友情链接
查看>>
ratio 是否压缩
查看>>
IDEA导入spark源代码调试
查看>>
用rm递归递归删除子目录下所有文件
查看>>
安装完CentOS7后提示Initial setup of CentOS Linux 7 (core)
查看>>