python爬虫之crawlspider爬取全站数据
CrawlSpider:类,Spider的一个子类
全站数据爬取的方式:
1、基于Spider:手动请求
2、基于CrawlSpider
CrawlSpider的使用:
1、创建一个工程
2、cd xxx
3、创建爬虫文件
scrapy genspider -t crawl xxx www.xxx.com
爬取阳光热线网站:https://wz.sun0769.com/political/index/politicsNewest?id=1&page=1(爬一次就被封了)
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
class SunSpider(CrawlSpider):
name = "sun"
# allowed_domains = ["www.xxx.com"]
start_urls = ["https://wz.sun0769.com/political/index/politicsNewest?id=1&page=1"]
#链接提取器:根据指定规则(allow="正则")进行指定链接的提取
link = LinkExtractor(allow=r'id=1&page=\d+')
rules = (
#规则解析器:将链接提取器提取到的链接进行指定规则(callback)的解析操作
Rule(link, callback="parse_item", follow=True),
#follow=True:可以将链接提取器 继续作用到 链接提取器提取到的链接 所对应的页面中
)
def parse_item(self, response):
print(response)