python爬虫十四:scrapy crawlspider的介绍及使用

2023-10-30 23:30

本文主要是介绍python爬虫十四:scrapy crawlspider的介绍及使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、scrapy crawlspider的介绍

他有着自动提取规则,内部封装的只要我们爬取的数据有规律并且在网页源码中,就可以实现他的自动抓取,我们不用管具体交给它做,下面会有案例展示
之前的代码中,我们有很大一部分时间在寻找下一页的URL地址或者内容的URL地址上面,这个过程能更简单一些吗?
思路:
1.从response中提取所有的li标签对应的URL地址
2.自动的构造自己resquests请求,发送给引擎
目标:通过爬虫了解crawlspider的使用
生成crawlspider的命令:scrapy genspider -t crawl 爬虫名字 域名

2、Rule规则类

class scrapy.spiders.Rule(link_extractor, # 一个LinkExtractor对象,用于定义爬取规则。callback = None, # 满足这个规则的url,应该要执行哪个回调函数。cb_kwargs = None, follow = None, # 指定根据该规则从response中提取的链接是否需要跟进。process_links = None, # 从link_extractor中获取到链接后会传递给这个函数,用来过滤不需要爬取的链接。process_request = None
)

3、LinkExtractors链接提取器的介绍

class scrapy.linkextractors.LinkExtractor(allow = (), # 允许的url。所有满足这个正则表达式的url都会被提取。deny = (), # 禁止的url。所有满足这个正则表达式的url都不会被提取。allow_domains = (), # 允许的域名。只有在这个里面指定的域名的url才会被提取。deny_domains = (), # 禁止的域名。所有在这个里面指定的域名的url都不会被提取。deny_extensions = None,restrict_xpaths = (), # 严格的xpath。和allow共同过滤链接。tags = ('a','area'),attrs = ('href'),canonicalize = True,unique = True,process_value = None
)

5、案例演示 爬取小程序社区(实操crawlspider让他自动抓取感受他的强大)

附上代码,有问题留言我解答,这是Rule内部封装的提取规则,你想看他怎么实现的就看他的源码,我只会用知道他很神奇,我也不知道他的原理,大家别问我原理,其余的欢迎提问
目标网址:点击进入目标网址
第一步:创建项目scrapy startproject 项目名
我以heihei为例(先在setting里面写一下:LOG_LEVEL='WARNING')
第二步:进入项目cd 项目名
cd heihei
第三步:创建crawlspiderscrapy genspider -t crawl 爬虫名 爬虫区域
我以scrapy genspider -t crawl haha wxapp-union.com
为例爬取
第四步:在爬虫里面搞事情
将下面的代码写入haha就可实现
第五步:终端输入scrapy crawl haha回车就可以看到效果

import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
# 需求:爬取微信小程序社区的 标题 作者 日期 翻页
class WxappSpider(CrawlSpider):name = 'haha'allowed_domains = ['wxapp-union.com']start_urls = ['http://www.wxapp-union.com/portal.php?mod=list&catid=2&page=1']rules = (# 列表页面Rule(LinkExtractor(allow=r'www.wxapp-union.com/portal.php\?mod=list&catid=2&page=\d+'), follow=True),# 详情页面Rule(LinkExtractor(allow=r'www.wxapp-union.com/article-\d+-1.html'), callback='parse_item'),)def parse_item(self, response):item = {}item['title'] = response.xpath("//h1[@class='ph']/text()").extract_first()item['author'] = response.xpath("//p[@class='authors']/a/text()").extract_first()item['pub_data'] = response.xpath("//p[@class='authors']/span/text()").extract_first()print(item)

效果图:ctrl+c终止进程,想要保存数据在pipeline里面操作,我的前几篇文章有讲,想保存的话自己翻着看看
在这里插入图片描述

这篇关于python爬虫十四:scrapy crawlspider的介绍及使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/311281

相关文章

如何将Python彻底卸载的三种方法

《如何将Python彻底卸载的三种方法》通常我们在一些软件的使用上有碰壁,第一反应就是卸载重装,所以有小伙伴就问我Python怎么卸载才能彻底卸载干净,今天这篇文章,小编就来教大家如何彻底卸载Pyth... 目录软件卸载①方法:②方法:③方法:清理相关文件夹软件卸载①方法:首先,在安装python时,下

python uv包管理小结

《pythonuv包管理小结》uv是一个高性能的Python包管理工具,它不仅能够高效地处理包管理和依赖解析,还提供了对Python版本管理的支持,本文主要介绍了pythonuv包管理小结,具有一... 目录安装 uv使用 uv 管理 python 版本安装指定版本的 Python查看已安装的 Python

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t

Python中局部变量和全局变量举例详解

《Python中局部变量和全局变量举例详解》:本文主要介绍如何通过一个简单的Python代码示例来解释命名空间和作用域的概念,它详细说明了内置名称、全局名称、局部名称以及它们之间的查找顺序,文中通... 目录引入例子拆解源码运行结果如下图代码解析 python3命名空间和作用域命名空间命名空间查找顺序命名空

Python如何将大TXT文件分割成4KB小文件

《Python如何将大TXT文件分割成4KB小文件》处理大文本文件是程序员经常遇到的挑战,特别是当我们需要把一个几百MB甚至几个GB的TXT文件分割成小块时,下面我们来聊聊如何用Python自动完成这... 目录为什么需要分割TXT文件基础版:按行分割进阶版:精确控制文件大小完美解决方案:支持UTF-8编码

基于Python打造一个全能文本处理工具

《基于Python打造一个全能文本处理工具》:本文主要介绍一个基于Python+Tkinter开发的全功能本地化文本处理工具,它不仅具备基础的格式转换功能,更集成了中文特色处理等实用功能,有需要的... 目录1. 概述:当文本处理遇上python图形界面2. 功能全景图:六大核心模块解析3.运行效果4. 相

Python中的魔术方法__new__详解

《Python中的魔术方法__new__详解》:本文主要介绍Python中的魔术方法__new__的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、核心意义与机制1.1 构造过程原理1.2 与 __init__ 对比二、核心功能解析2.1 核心能力2.2

Python虚拟环境终极(含PyCharm的使用教程)

《Python虚拟环境终极(含PyCharm的使用教程)》:本文主要介绍Python虚拟环境终极(含PyCharm的使用教程),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录一、为什么需要虚拟环境?二、虚拟环境创建方式对比三、命令行创建虚拟环境(venv)3.1 基础命令3

Python Transformer 库安装配置及使用方法

《PythonTransformer库安装配置及使用方法》HuggingFaceTransformers是自然语言处理(NLP)领域最流行的开源库之一,支持基于Transformer架构的预训练模... 目录python 中的 Transformer 库及使用方法一、库的概述二、安装与配置三、基础使用:Pi