多语言展示
当前在线:845今日阅读:176今日分享:34

使用Scrapy爬虫简书的内容保存到本地

本文主要介绍使用使用Python3和Scrapy进行爬虫实例讲解,通过多访问简书某个作者的主页获取该作者的最新文章内容,并保存到本地文件。
工具/原料
1

Python3

2

Scrapy

3

Ubuntu 18 系统连接互联网

create scrapy project for Zhifu
1

使用scrapy startproject zhifuSpider创建Scrapy框架工程:hxb@lion:~/PycharmProjects$ scrapy startproject zhifuSpiderNew Scrapy project 'zhifuSpider', using template directory '/home/hxb/.local/lib/python3.6/site-packages/scrapy/templates/project', creat////////ed in:    /home/hxb/PycharmProjects/zhifuSpiderYou can start your first spider with:    cd zhifuSpider    scrapy genspider example example.com

2

使用scrapy generate 产生spider类:hxb@lion:~/PycharmProjects$ cd zhifuSpiderhxb@lion:~/PycharmProjects/zhifuSpider$ scrapy genspider zhihu https://zhuanlan.zhihu.com/easypanCreated spider 'zhihu' using template 'basic'

使用PyCharm导入上一步创建的scrapy工程
1

在PyCharm中打开zhihuSpider工程:File-》Open导入工程后,系统默认使用了Python2.7, 我们需要在setting中修改该工程的python环境为Python 3.

2

编写爬虫主类zhihu.py获取主页中的所有文章列表信息,包括文章标题和文章链接,xpath信息如下:url_item['urls'] = selector.xpath('//ul[@class='note-list']/li/div[@class='content']/a/@href').extract()url_item['key_infos'] = selector.xpath('//ul[@class='note-list']/li/div[@class='content']/a/text()').extract()

3

编写爬虫的内容后处理pipelines.py: 这里我将每篇文章的标题和内容保存,以文章的标题作为文件名(html)保存到本地文件系统中

4

爬虫配置文件settings.py: 需要配置爬虫的pipeline

运行和测试Scrapy工程
1

运行scrapy工程:使用命令scrapy crawl zhihuhxb@lion:~/PycharmProjects/zhifuSpider/zhifuSpider$ scrapy crawl zhihu

2

在运行爬虫后,在后台日志中可以发现403错误,文章的内容也没有正确保存403 erro , requests need add user agnet in the header2018-07-16 18:55:34 [scrapy.core.engine] DEBUG: Crawled (403) (referer: None)2018-07-16 18:55:34 [scrapy.spidermiddlewares.httperror] INFO: Ignoring response <403 https://www.jianshu.com/c/b17f09dc2831>: HTTP status code is not handled or not allowed

3

解决403问题的方法:1. 需要在 settings.py文件中,增加user_agent选项2. 重新运行爬虫

4

检查爬虫输出是否正确1. 爬虫日志没有出现日志2. 爬虫的结果也正确保存到了本地文件

注意事项

在使用requests访问url时需要增加requests的user-agent属性信息

推荐信息