spider的子类,主要用于全站数据的爬取
使用
# 创建一个工程
scrapy startproject XXX
# 进工程路径
cd XXX
# 创建爬虫文件
scrapy genspider -t crawl XXX www.XXX.com
# 运行
scrapy crawl XXX
规则解析器遇到重复的会自动删掉,不需要手动
# 注意,该网站有反爬机制
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
class SunSpider(CrawlSpider):
name = 'sun'
start_urls = ['https://wz.sun0769.com/political/index/politicsNewest']
# 在起始页面中提取符合规则的链接,然后对其调用parse——item解析
rules = (
# 提取的还是源文件,不是动态加载的
# follow=True:可以将链接提取器到提取到的链接中,从而爬取整个页码;设为false只能提取起始页面中的内容
Rule(LinkExtractor(allow=r'id=1&page=\d+'), callback='parse_item', follow=True),
)
def parse_item(self, response):
print(response) #这里只能提取出html中有的两个链接
# item = {}
# #item['domain_id'] = response.xpath('//input[@id="sid"]/@value').get()
# #item['name'] = response.xpath('//div[@id="name"]').get()
# #item['description'] = response.xpath('//div[@id="description"]').get()
# return item