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

2024-10-12 03:12:31

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

工具/原料

Python3

Scrapy

Ubuntu 18 系统连接互联网

create scrapy project for Zhifu

1、使用scrapy startproject zhifuSpider创建Scrapy框架工程:hx水瑞侮瑜b@l足毂忍珩ion:~/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

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

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'

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

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

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

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

2、编写爬虫主类zhihu.py获取主页中的所有文章列表信息,包括文章标题和文章链接,xpath信息如下:url_item['urls&垆杪屑丝#39;] = 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()

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

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

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

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

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

运行和测试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) <GET https://www.jianshu.com/c/b17f09dc2831> (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

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

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

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

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

使用Scrapy爬虫简书的内容保存到本地使用Scrapy爬虫简书的内容保存到本地
猜你喜欢