通用爬虫--CrawlSpider

本次以下厨房为例

创建(继承自CrawlSpider类)

scrapy genspider -t crawl xcfCrawlSpider xiachufang.com

打开爬虫文件

from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
#通用爬虫提取到的连接会构建一个Link对象
from scrapy.link import Link
from xiachufang.items import XiachufangCaiPuItem,XiachufangTagItem,XiachufangUserInfoItem


class XcfcrawlspiderSpider(CrawlSpider):
    #爬虫名称
    name = 'xcfCrawlSpider'
    #设置允许爬取的域
    allowed_domains = ['xiachufang.com']
    #设置起始的url
    # start_urls = ['http://www.xiachufang.com/category/']
    redis_key = 'xcfCrawlSpider:start_urls'
    # LinkExtractor中的相关参数
    """
    allow = (), :设置正则规则,符合正则表达式的所有url都会被提取,
                如果为空,则提取全部的url连接
    restrict_xpaths = ():使用xpath语法,定位到指定的标签(节点)下,
                        在该标签(节点)下获取我们的url连接
    restrict_css = ()
    """

    rules = (
        #分类列表地址
        # http://www.xiachufang.com/category/40073/
        Rule(
            LinkExtractor(allow=r'.*?/category/\d+/'),
            follow=True,
            process_links='check_category_url'
        ),
        # 菜单详情地址,
        # http://www.xiachufang.com/recipe/1055105/
        Rule(
            LinkExtractor(
                allow=r'.*?/recipe/\d+/',
            ),
            callback='parse_caipu_detail',
            follow=True,
        ),
        #用户信息接口
        #http://www.xiachufang.com/cook/118870772/
        Rule(
            LinkExtractor(
                allow=r'.*?/cook/\d+/'
            ),
            callback='parse_userinfo_detail',
            follow=True,
        )
    )
    def parse_start_url(self, response):
    """
    如果想要对起始url的响应结果做处理的话,就需要回调这个方法
    """
        self.parse_item
    def parse_item(self, response):
        pass
    def check_category_url(self,links):
        """
        可以在此方法做对规则提取的url构建成的的link对象做过滤处理
        当正则无法匹配到完整的url,我们也可以通过这个方法对url进行拼接
        如:某些网页需要拼接锚点可以通过调用这个方法
        :param links:
        :return:
        """
        
   
   print('===================',links,'===================')
        return links

rule规则常用的参数

LinkExtractor: 提取连接的规则(正则)
allow = ():设置允许提取的目标url
deny=():设置不允许提取的目标url(优先级比allow高)
restrict_xpaths=(): 根据xpath语法,定位到某一标签提取目标url
restrict_css=(): 根据css语法,定位到某一标签提取目标url

callback=None:设置回调函数
follow=None:是否设置跟进(下一页满足条件跟进)
process_links:可设置回调函数,对request对象拦截(标签下无法直接获取的url,拼接url锚点)

注意

  • 通用爬虫不能用parse方法
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容