首页 > 其他分享 >Scrapy 中 CrawlSpider 使用(一)

Scrapy 中 CrawlSpider 使用(一)

时间:2023-06-24 19:35:15浏览次数:106  
标签:None CrawlSpider scrapy Scrapy link LinkExtractor 使用 domains 链接

创建CrawlSpider

scrapy genspider -t crawl 爬虫名 (allowed_url)

Rule对象

Rule类与CrawlSpider类都位于scrapy.contrib.spiders模块中

class scrapy.contrib.spiders.Rule( 
    link_extractor,         
    callback=None,
    cb_kwargs=None,
    follow=None,
    process_links=None,
    process_request=None) 

参数含义:

  • link_extractor为LinkExtractor,用于定义需要提取的链接

  • callback参数:当link_extractor获取到链接时参数所指定的值作为回调函数

  • follow:指定了根据该规则从response提取的链接是否需要跟进。当callback为None,默认值为True

  • process_links:主要用来过滤由link_extractor获取到的链接

  • process_request:主要用来过滤在rule中提取到的request

LinkExtractors 顾名思义,链接提取器

response对象中获取链接,并且该链接会被接下来爬取 每个LinkExtractor有唯一的公共方法是 extract_links(),它接收一个 Response 对象,并返回一个 scrapy.link.Link 对象

class scrapy.linkextractors.LinkExtractor(
  allow = (),
  deny = (),
  allow_domains = (),
  deny_domains = (),
  deny_extensions = None,
  restrict_xpaths = (),
  tags = ('a','area'),
  attrs = ('href'),
  canonicalize = True,
  unique = True,
  process_value = None
)

主要参数:

  • allow:满足括号中“正则表达式”的值会被提取,如果为空,则全部匹配。
  • deny:与这个正则表达式(或正则表达式列表)不匹配的URL一定不提取。
  • allow_domains:会被提取的链接的domains。
  • deny_domains:一定不会被提取链接的domains。
  • restrict_xpaths:使用xpath表达式,和allow共同作用过滤链接(只选到节点,不选到属性)
  • restrict_css:使用css表达式,和allow共同作用过滤链接(只选到节点,不选到属性)

查看效果-shell中验证

首先运行

scrapy shell '一个url地址'

继续import相关模块:

from scrapy.linkextractors import LinkExtractor

提取当前网页中获得的链接

link = LinkExtractor(restrict_xpaths=(r'//a'))

调用LinkExtractor实例的extract_links()方法查询匹配结果

 link.extract_links(response)

 

标签:None,CrawlSpider,scrapy,Scrapy,link,LinkExtractor,使用,domains,链接
From: https://www.cnblogs.com/jiangjiayun/p/17501529.html

相关文章

  • Java 一维数组的使用
    Java一维数组的使用1.一维数组的定义在不知道数组内容可以直接使用下面的定义方法:int[]arr=newint[数组个数];或intarr[]=newint[数组个数];在知道数组内容可以使用如下:int[]arr={data1,data2,data.....};2.数组的传递数组的传递与其他基本类型的值传递不同,......
  • Scrapy 保存数据案例-小说保存
    spiderimportscrapyclassXiaoshuoSpider(scrapy.Spider):name="爬虫名"allowed_domains=["域名"]start_urls=["第一章url地址"]defparse(self,response):#章节名称title=response.xpath('//h1/......
  • Scrapy_ImagePipeline保存图片
    创建一个项目scrapystartprojectmyfrist(project_name)创建一个爬虫scrapygenspider爬虫名爬虫地址需要安装pillowpipinstallpillow报错:twisted.python.failure.FailureOpenSSL.SSL.Error解决方案pipuninstallcryptographypipinstallcryptography==36.0.2代......
  • JQuery中的each()方法和$.each()函数的使用
    1、元素(对象).each()方法的使用JQuery提供了each()方法用于遍历匹配的元素信息。以每一个匹配的元素作为上下文来执行一个函数。每次执行传递进来的函数时,函数中的this关键字都指向一个不同的DOM元素(每次都是一个不同的匹配元素)。而且,在每次执行函数时,都会给函数传递一个表......
  • 开源的文件同步软件推荐,可本地使用,无需自建服务器
    开源的文件同步软件推荐,可本地使用,无需自己搭建服务器:1.Syncthing:开源的文件同步工具,支持多个操作系统,使用点对点的方式进行同步,无需中央服务器。2.FreeFileSync:开源的文件同步和备份工具,支持Windows、macOS和Linux操作系统。3.ResilioSync:快速、安全的文件同步和共享工具,......
  • Spring接口简单使用
    Spring接口简单使用ApplicationContextAwareApplicationContextAware是一个Spring接口,用于在Spring应用程序中获取ApplicationContext对象。ApplicationContext是Spring框架对Bean的管理容器,它负责加载、配置和管理应用程序中的Bean。使用ApplicationContextAwar......
  • 3分钟了解MacBook m1芯片使用docker安装nginx
    1、先安装nginxdockerpullnginx2、创建目录mkdir-p/Users/benjie/software/nginx/confmkdir-p/Users/benjie/software/nginx/logsmkdir-p/Users/benjie/software/nginx/html3、启动nginx实例,为了复制配置dockerrun--namenginx-p80:80-dnginx:latest4、......
  • PostMan工具的使用
    PostMan工具的使用1PostMan简介代码编写完后,我们要想测试,只需要打开浏览器直接输入地址发送请求即可。发送的是GET请求可以直接使用浏览器,但是如果要发送的是POST请求呢?如果要求发送的是post请求,我们就得准备页面在页面上准备form表单,测试起来比较麻烦。所以我们就需要借助一......
  • Apollo2.1.0+Springboot使用OpenApI
    依赖管理<!--bootstrap最高级启动配置读取--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId><version>3.1.3</v......
  • 第六节:基于.Net的OpenAI包测试使用ChatGPT的各种Api
    一.前置1. 说明 支持多种语言,详见:https://platform.openai.com/docs/libraries/community-libraries 以.Net为例,主要有三个包  OpenAI           https://github.com/OkGoDoIt/OpenAI-API-dotnet  Betalgo.OpenAI     https://g......