内容简述:

一:多线程爬虫

二: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框架相关推荐

  1. Python|并发编程|爬虫|单线程|多线程|异步I/O|360图片|Selenium及JavaScript|Scrapy框架|BOM 和 DOM 操作简介|语言基础50课:学习(12)

    文章目录 系列目录 原项目地址 第37课:并发编程在爬虫中的应用 单线程版本 多线程版本 异步I/O版本 总结 第38课:抓取网页动态内容 Selenium 介绍 使用Selenium 加载页面 查找 ...

  2. python 全栈开发,Day137(爬虫系列之第4章-scrapy框架)

    python 全栈开发,Day137(爬虫系列之第4章-scrapy框架) 一.scrapy框架简介 1. 介绍 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所 ...

  3. 爬虫学习笔记(十)—— Scrapy框架(五):下载中间件、用户/IP代理池、settings文件

    一.下载中间件 下载中间件是一个用来hooks进Scrapy的request/response处理过程的框架. 它是一个轻量级的底层系统,用来全局修改scrapy的request和response. ...

  4. python 爬虫 学习笔记(一)Scrapy框架入门

    沉迷于通过高效算法及经典数据结构来优化程序的时候并不理解,为什么多线程可以优化爬虫运行速度?原来是程序特性所决定的:传统算法的程序复杂度主要来源于计算,但网络程序的计算时间可以忽略不计,网络程序所面临 ...

  5. python爬虫之无界面模式操作/scrapy框架

    文章目录 前情回顾 cookie模拟登陆 三个池子 selenium+phantomjs/chrome/firefox 今日笔记 chromedriver设置无界面模式 selenium - 键盘操作 ...

  6. python新闻爬虫系统的功能_基于Scrapy框架的Python新闻爬虫

    一.开发背景 Python作为数据处理方面的一把好手,近年来的热度不断增长.网络爬虫可以说是Python最具代表性的应用之一,那么通过网络爬虫来学习Python以及网络和数据处理的相关内容可以说是再合 ...

  7. 《零基础入门学习Python》第063讲:论一只爬虫的自我修养11:Scrapy框架之初窥门径

    上一节课我们好不容易装好了 Scrapy,今天我们就来学习如何用好它,有些同学可能会有些疑惑,既然我们懂得了Python编写爬虫的技巧,那要这个所谓的爬虫框架又有什么用呢?其实啊,你懂得Python写 ...

  8. Python爬虫自学笔记(五)Scrapy框架

    Python有很多好用的框架,在爬虫领域,最重要的就是Scrapy框架了. 1.安装与启动 安装(命令行) pip3 install scrapy 创建scrapy项目(命令行进到要建立scrapy项 ...

  9. 【Python爬虫系列教程 31-100】通过scrapy框架、爬取汽车之家宝马5系图片,学习Images管道

    现在爬取的汽车之家宝马5系车的图片,可以看到在这个网址里面,放了车的不同部位的图片,下面就要将他们爬下来并且保存到不同的文件夹. 首先用到的是pycharm IDE,这个软件可以提高编写代码的效率,因 ...

  10. 【Python 爬虫学习笔记】三、Scrapy框架的简单示例

    一.网站分析 目标任务: 爬取http://quotes.toscrape.com/下的名言.作者.标签 网站结构: 可以看到网站结构比较简单,获取class为quote的div节点,然后访问其子节点 ...

最新文章

  1. 笔记本通过网线连接并控制工控机
  2. JSONObject 和 JSONArray 获取value 的方法
  3. 10624 - Super Number
  4. 如果要存 IP 地址,用什么数据类型比较好?大部人都会答错!
  5. Caused by: java.lang.NoClassDefFoundError: redis/clients/util/Pool
  6. 解决Can't connect to MySQL server on 'localhost' (10048)
  7. 2019.4.17 映纷创意首页铺设练习
  8. minecraft pythonapl_Substance PythonAPI入门案例
  9. 【文末有福利】卷积学习与图像识别的技术发展
  10. linux suse最新版本,SUSE Linux Enterprise Server 15 正式发布
  11. C#线程系列讲座(4):同步与死锁
  12. 在RHEL5下构建LAMP网站服务平台之MySQL、PHP的安装与配置
  13. matlab车牌识别源代码资源,车牌识别系统MATLAB源代码完整
  14. Python 植物大战僵尸代码实现
  15. SublimeText 3 高亮 MATLAB语法
  16. 分享]基于Web开发资料专集
  17. Delphi实现多线程
  18. 电源适配器的作用有哪些
  19. 【Java虚拟机】万字长文,搞定JVM方方面面!
  20. 关于 惠普 ENVY x360 15 bp10? 升级内存、硬盘 拆机 注意事项

热门文章

  1. Qt工作笔记-QString中arg的使用(可用于SQL语句拼接)
  2. 嵌入式linux sd卡读写,嵌入式Linux之我行——S3C2440上MMC/SD卡驱动实例开发讲解(二)...
  3. 单片机自动调光C语言,51单片机触控调光程序C语言
  4. filesaver.js 导出文件路径_CourseMaker微课制作教程20:做好的微课,如何保存和导出为.mp4等视频格式?...
  5. image copy oracle,RMAN删除image copy时遇到的问题
  6. linux nfs mysql_MySQL实现高可用+共享存储NFS
  7. 安装翻译_百度翻译下载安装官方地址
  8. qq头像计算机系,QQ头像
  9. Android开发:5-1、Adopter
  10. 8-2:C++继承之父类和子类对象赋值转换(公有继承)也即切片