python多线程框架_Python爬虫第七天:多线程爬虫|Scrapy框架
内容简述:
一:多线程爬虫
二:Scrapy框架
一:多线程爬虫原理
【示例见代码】
二:Scrapy框架
定义:Scrapy是基于Python实现,方便爬取网站数据、提取结构性数据的应用框架。
底层:使用Twisted异步网络框架来处理网络通讯,加快下载速度。
不用手动实现异步框架,包含了多种中间件接口,非常灵活。
Scrapy运行架构流程图:
组件说明:
Scrapy Engine(引擎): 负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。
Scheduler(调度器): 负责接收引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。
Downloader(下载器):负责下载引擎发送的所有Requests请求,并将其获取到的Responses交还给引擎,由引擎交给Spider来处理。
Spider(爬虫):负责处理所有Responses,分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入调度器
Item Pipeline(管道):负责处理Spider中获取到的Item,并进行后期处理(如详细分析、过滤、存储等).
Downloader Middlewares(下载中间件):类似一个可以自定义扩展下载功能的组件。
Spider Middlewares(Spider中间件):类似一个可以自定扩展和操作引擎和Spider中间通信的功能组件(比如进入Spider的Responses以及从Spider出去的Requests)
简单使用:(安装)pip3 install scrapy
(1)创建项目scrapy startproject spider1(项目名称)
(2)目录结构
spider1
spider1
spiders 爬虫目录(写代码位置)
__init__.py
lala.py 爬虫文件
__init__.py
items.py 定义数据结构地方
middlewares.py 中间件
pipelines.py 管道文件
settings.py 项目配置文件
scrapy.cfg
通过指令创建爬虫文件
cd spider1/spider1
scrapy genspider qiubai"www.qiushibaike.com"
此时在spider1/spider1/spiders里面自动创建一个qiubai.py
name:爬虫的名字,启动的时候根据爬虫的名字启动项目
allowed_domains:允许的域名。意思是爬取的时候这个请求要不要发送,如果是该允许域名下的url,就会发送,否则过滤掉这个请求。【列表允许多个域名】
start_urls:爬虫起始url,是一个列表,里面可以写多个,一般只写一个
def parse(self, response):写代码的入口,parse函数名是固定。当收到下载数据时系统会自动调用
参数response,是一个响应对象,可从中获取html字符串,然后解析之。
【温馨提示】这个parse函数必须返回一个可迭代对象
(3)定制items.py,个性化定义数据结构格式。
(4)运行-打印response对象测试下
来到终端下:
cd spider1/ spider1/spiders
scrapy crawl qiubai
根据response获取网页内容
response.text 字符串类型 response.body二进制类型
(5)运行,直接通过命令导出json格式
scrapy crawl qiubai -o qiubai.json
scrapy crawl qiubai -o qiubai.xml
scrapy crawl qiubai -o qiubai.csv
【注】window 安装问题参考
pip install Scrapy
building 'twisted.test.raiser' extension
error: Microsoft Visual C++ 14.0 is required.Get it with "Microsoft Visual C++ BuildTools": http://landinghub.visualstudio.com/visual-cpp-build-tools
解决方案:
http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted
下载twisted对应版本的whl文件(如我的Twisted-17.5.0-cp36-cp36m-win_amd64.whl),cp后面是python版本,amd64代表64位,运行命令:
pip install C:\Users\CR\Downloads\Twisted-17.5.0-cp36-cp36m-win_amd64.whl
pip install Scrapy
python多线程框架_Python爬虫第七天:多线程爬虫|Scrapy框架相关推荐
- Python|并发编程|爬虫|单线程|多线程|异步I/O|360图片|Selenium及JavaScript|Scrapy框架|BOM 和 DOM 操作简介|语言基础50课:学习(12)
文章目录 系列目录 原项目地址 第37课:并发编程在爬虫中的应用 单线程版本 多线程版本 异步I/O版本 总结 第38课:抓取网页动态内容 Selenium 介绍 使用Selenium 加载页面 查找 ...
- python 全栈开发,Day137(爬虫系列之第4章-scrapy框架)
python 全栈开发,Day137(爬虫系列之第4章-scrapy框架) 一.scrapy框架简介 1. 介绍 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所 ...
- 爬虫学习笔记(十)—— Scrapy框架(五):下载中间件、用户/IP代理池、settings文件
一.下载中间件 下载中间件是一个用来hooks进Scrapy的request/response处理过程的框架. 它是一个轻量级的底层系统,用来全局修改scrapy的request和response. ...
- python 爬虫 学习笔记(一)Scrapy框架入门
沉迷于通过高效算法及经典数据结构来优化程序的时候并不理解,为什么多线程可以优化爬虫运行速度?原来是程序特性所决定的:传统算法的程序复杂度主要来源于计算,但网络程序的计算时间可以忽略不计,网络程序所面临 ...
- python爬虫之无界面模式操作/scrapy框架
文章目录 前情回顾 cookie模拟登陆 三个池子 selenium+phantomjs/chrome/firefox 今日笔记 chromedriver设置无界面模式 selenium - 键盘操作 ...
- python新闻爬虫系统的功能_基于Scrapy框架的Python新闻爬虫
一.开发背景 Python作为数据处理方面的一把好手,近年来的热度不断增长.网络爬虫可以说是Python最具代表性的应用之一,那么通过网络爬虫来学习Python以及网络和数据处理的相关内容可以说是再合 ...
- 《零基础入门学习Python》第063讲:论一只爬虫的自我修养11:Scrapy框架之初窥门径
上一节课我们好不容易装好了 Scrapy,今天我们就来学习如何用好它,有些同学可能会有些疑惑,既然我们懂得了Python编写爬虫的技巧,那要这个所谓的爬虫框架又有什么用呢?其实啊,你懂得Python写 ...
- Python爬虫自学笔记(五)Scrapy框架
Python有很多好用的框架,在爬虫领域,最重要的就是Scrapy框架了. 1.安装与启动 安装(命令行) pip3 install scrapy 创建scrapy项目(命令行进到要建立scrapy项 ...
- 【Python爬虫系列教程 31-100】通过scrapy框架、爬取汽车之家宝马5系图片,学习Images管道
现在爬取的汽车之家宝马5系车的图片,可以看到在这个网址里面,放了车的不同部位的图片,下面就要将他们爬下来并且保存到不同的文件夹. 首先用到的是pycharm IDE,这个软件可以提高编写代码的效率,因 ...
- 【Python 爬虫学习笔记】三、Scrapy框架的简单示例
一.网站分析 目标任务: 爬取http://quotes.toscrape.com/下的名言.作者.标签 网站结构: 可以看到网站结构比较简单,获取class为quote的div节点,然后访问其子节点 ...
最新文章
- 笔记本通过网线连接并控制工控机
- JSONObject 和 JSONArray 获取value 的方法
- 10624 - Super Number
- 如果要存 IP 地址,用什么数据类型比较好?大部人都会答错!
- Caused by: java.lang.NoClassDefFoundError: redis/clients/util/Pool
- 解决Can't connect to MySQL server on 'localhost' (10048)
- 2019.4.17 映纷创意首页铺设练习
- minecraft pythonapl_Substance PythonAPI入门案例
- 【文末有福利】卷积学习与图像识别的技术发展
- linux suse最新版本,SUSE Linux Enterprise Server 15 正式发布
- C#线程系列讲座(4):同步与死锁
- 在RHEL5下构建LAMP网站服务平台之MySQL、PHP的安装与配置
- matlab车牌识别源代码资源,车牌识别系统MATLAB源代码完整
- Python 植物大战僵尸代码实现
- SublimeText 3 高亮 MATLAB语法
- 分享]基于Web开发资料专集
- Delphi实现多线程
- 电源适配器的作用有哪些
- 【Java虚拟机】万字长文,搞定JVM方方面面!
- 关于 惠普 ENVY x360 15 bp10? 升级内存、硬盘 拆机 注意事项
热门文章
- Qt工作笔记-QString中arg的使用(可用于SQL语句拼接)
- 嵌入式linux sd卡读写,嵌入式Linux之我行——S3C2440上MMC/SD卡驱动实例开发讲解(二)...
- 单片机自动调光C语言,51单片机触控调光程序C语言
- filesaver.js 导出文件路径_CourseMaker微课制作教程20:做好的微课,如何保存和导出为.mp4等视频格式?...
- image copy oracle,RMAN删除image copy时遇到的问题
- linux nfs mysql_MySQL实现高可用+共享存储NFS
- 安装翻译_百度翻译下载安装官方地址
- qq头像计算机系,QQ头像
- Android开发:5-1、Adopter
- 8-2:C++继承之父类和子类对象赋值转换(公有继承)也即切片