基于Scrapt框架的全站数据爬取
创建scrapy工程项目,除了爬虫文件中的代码需要略微修改,其他模块用法相同(如中间件,管道等);
爬虫文件代码流程
导入链接提取器
from scrapy.linkextractors import LinkExtractor
导入规则解析器
from scrapy.spiders import CrawlSpider,Rule
1、使爬虫文件中的类不在继承scrapy.Spider,而是CrawlSpider
2、起始URL一样
3、定义链接提取规则,基于正则表达式
link = LinkExteactor(allow = 'r'所需的正则表达式")
link2 = LinkExteactor(allow = 'r'所需的正则表达式")
框架会自动请求起始URL,并将页面返回给链接提取器,链接提取器通过正则表达式提取匹配的URL;
4、定义规则解析器
rules = (
Rule(link(链接提取器名称),callback="回调函数名称",follew=True),
Rule(link2(链接提取器名称),callback="回调函数名称",follew=False),
)
follew参数表示,是否在link获取到的链接内继续获取link中要匹配的链接
框架会自动让规则解析器去请求链接提取器提取到的链接,并返回页面交给回调函数,回调函数,用来编写解析数据的代码;
5、编写回调函数解析数据
def parse_one(self,response):
print(response)
def parse_two(self,response):
print(response)
基于Scrapt框架的全站数据爬取的更多相关文章
- Scrapy 框架 CrawlSpider 全站数据爬取
CrawlSpider 全站数据爬取 创建 crawlSpider 爬虫文件 scrapy genspider -t crawl chouti www.xxx.com import scrapy fr ...
- scrapy框架基于CrawlSpider的全站数据爬取
引入 提问:如果想要通过爬虫程序去爬取”糗百“全站数据新闻数据的话,有几种实现方法? 方法一:基于Scrapy框架中的Spider的递归爬取进行实现(Request模块递归回调parse方法). 方法 ...
- scrapy框架之CrawlSpider全站自动爬取
全站数据爬取的方式 1.通过递归的方式进行深度和广度爬取全站数据,可参考相关博文(全站图片爬取),手动借助scrapy.Request模块发起请求. 2.对于一定规则网站的全站数据爬取,可以使用Cra ...
- 移动端数据爬取和Scrapy框架
移动端数据爬取 注:抓包工具:青花瓷 1.配置fiddler 2.移动端安装fiddler证书 3.配置手机的网络 - 给手机设置一个代理IP:port a. Fiddler设置 打开Fiddler软 ...
- 基于python的统计公报关键数据爬取
# -*- coding: utf-8 -*- """ Created on Wed Nov 8 14:23:14 2017 @author: 123 "&qu ...
- 基于 PHP 的数据爬取(QueryList)
基于PHP的数据爬取 官方网站站点 简单. 灵活.强大的PHP采集工具,让采集更简单一点. 简介: QueryList使用jQuery选择器来做采集,让你告别复杂的正则表达式:QueryList具有j ...
- requests模块session处理cookie 与基于线程池的数据爬取
引入 有些时候,我们在使用爬虫程序去爬取一些用户相关信息的数据(爬取张三“人人网”个人主页数据)时,如果使用之前requests模块常规操作时,往往达不到我们想要的目的,例如: #!/usr/bin/ ...
- requests模块处理cookie,代理ip,基于线程池数据爬取
引入 有些时候,我们在使用爬虫程序去爬取一些用户相关信息的数据(爬取张三“人人网”个人主页数据)时,如果使用之前requests模块常规操作时,往往达不到我们想要的目的. 一.基于requests模块 ...
- 基于CrawlSpider全栈数据爬取
CrawlSpider就是爬虫类Spider的一个子类 使用流程 创建一个基于CrawlSpider的一个爬虫文件 :scrapy genspider -t crawl spider_name www ...
随机推荐
- jdk1.8 HashMap源码分析(resize函数)
// 扩容兼初始化 final Node<K, V>[] resize() { Node<K, V>[] oldTab = table; int oldCap = (oldTa ...
- 小D课堂 - 新版本微服务springcloud+Docker教程_6-04 自定义Zuul过滤器实现登录
笔记 4.自定义Zuul过滤器实现登录鉴权实战 简介:自定义Zuul过滤器实现登录鉴权实战 1.新建一个filter包 2.新建一个类,实现ZuulFilter,重写里面的方法 3.在类顶部加 ...
- [Spark] Spark 3.0 Accelerator Aware Scheduling - GPU
Ref: Spark3.0 preview预览版尝试GPU调用(本地模式不支持GPU) 预览版本:https://archive.apache.org/dist/spark/spark-3.0.0-p ...
- MATLAB学习(三)元素访问和常用代数运算
>> A=[1,2;3,4],B=[0,2;4,5] A = 1 2 3 4 B = 0 2 4 5 >> C=A>=B C = 1 1 0 0 >> D=A ...
- NLP基础
1 自然语言处理三大特征抽取器(CNN/RNN/TF)比较 白衣骑士Transformer:盖世英雄站上舞台 华山论剑:三大特征抽取器比较 综合排名情况 以上介绍内容是从几个不同角度来对RNN/CN ...
- UNITY3D 添加预制的方法
预制文件(Prefabs)的做法 我这里需要的图片 在hierarchy 视图下新建一个2D object->sprite 然后设置这个sprite的背景为需要的图片 新建一个prefabs目录 ...
- Windows 桌面利用 Navicat等工具连接 虚拟机Mysql
1.mysql>use mysql;2.mysql>update user set host = '%' where user ='root';3.mysql>select host ...
- Windows To Go 制作详解
拥有 Mac 的同学大概都会碰到一个头疼的问题,那就是使用 Windows 的使用需求.macOS 虽好,不过总是会有一些讨厌的软件没有 Mac 版本,这时就不得不在 Mac 上跑 Windows 了 ...
- Leetcode之动态规划(DP)专题-198. 打家劫舍(House Robber)
Leetcode之动态规划(DP)专题-198. 打家劫舍(House Robber) 你是一个专业的小偷,计划偷窃沿街的房屋.每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互 ...
- C学习笔记-数据类型
常量 在程序中不可变化的量,也就不可赋值 常用两种定义方式,#define和const 另外还有一个字符串常量 define #define MAX 100 #define在预编译的时候,其实也是做的 ...