预备知识:在阅读本教程之前,需要对Scrapy框架有一定的了解,知晓Scrapy框架中每一个项目文件的作用。
推荐在阅读本文之前,先阅读以下这篇教程——轻松带你掌握Scrapy框架(以爬取古诗文网为例)https://blog.csdn.net/liumengqi11/article/details/112654295
CrawlSpider爬虫
- 作用:可以定义规则,让Scrapy自动的去爬取我们想要的链接。而不必跟Spider类一样,手动的yield Request。
- 创建:scrapy genspider -t crawl [爬虫名] [域名]
- 提取的两个类:
- LinkExtrator:用来定义需要爬取的url规则。
- Rule:用来定义这个url爬取后的处理方式,比如是否需要跟进,是否需要执行回调函数等。
猎云网爬虫
1.需求:实现猎云网网站的文章数据爬虫。需要保存标题、发布时间、内容、原始url字段,然后异步保存到mysql数据库中。
2.翻页链接:https://www.lieyunwang.com/latest/p1.html
3.翻页规则:Rule(LinkExtractor(allow=r’/latest/p\d+.html’), follow=True)
4.文章详情页规则:Rule(LinkExtractor(allow=r’/archives/\d+’), callback=“parse_detail”, follow=False)
5.使用twisted. enterprise.adbapi来异步的保存数据。
爬取过程
猎云网界面如下:
详情页面如下:
爬取过程:
1、新建文件搭建scrapy框架(以CrawlSpider的方式)
在命令提示符中输入以下三条命令:
scrapy startproject lyw
cd lyw
scrapy genspider -t crawl lyw_spider lieyunwang.com
2、在pycharm中打开文件,在item.py中定义要爬取的字段,并在setting.py中把机器人协议设置为False,并设置user-agent,解开ITEM_PIPELINES的注释
3、在文件夹下建立run.py文件,这样运行run.py文件就相当于运行整个文件了。run.py的代码如下:
from scrapy import cmdline
cmdline.execute("scrapy crawl lyw_spider".split(" "))
4、在lwy_spider.py中修改起始url,定义提取url的规则,代码如下:
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
from ..items import LywItem
class LywSpiderSpider(CrawlSpider):
name = 'lyw_spider'
allowed_domains = ['lieyunwang.com']
start_urls = ['https://www.lieyunwang.com/archives/p1.html']
rules = (
Rule