一、什么是Scrapy?

Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,非常出名,非常强悍。所谓的框架就是一个已经被集成了各种功能(高性能异步下载,队列,分布式,解析,持久化等)的具有很强通用性的项目模板。对于框架的学习,重点是要学习其框架的特性、各个功能的用法即可。

二、安装scrapy

Linux操作系统:

pip3 install scrapy

Windows操作系统:

a. pip3 install wheel

b. 下载twisted http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted

c. 进入下载目录,执行 pip3 install Twisted‑17.1.0‑cp35‑cp35m‑win_amd64.whl

d. pip3 install pywin32

e. pip3 install scrapy

三、scrapy基础使用

3.1 创建项目:

scrapy startproject 项目名称

scrapy.cfg 项目的主配置信息。(真正爬虫相关的配置信息在settings.py文件中)

items.py 设置数据存储模板,用于结构化数据,如:Django的Model

pipelines 数据持久化处理

settings.py 配置文件,如:递归的层数、并发数,延迟下载等

spiders 爬虫目录,如:创建文件,编写爬虫解析规则

项目目录结构:

项目结构:

project_name/scrapy.cfg:

project_name/

__init__.py

items.py

pipelines.py

settings.py

spiders/

__init__.py

3. 2 创建爬虫应用程序:

cd project_name(进入项目目录)

scrapy genspider 应用名称 爬取网页的起始url (例如:scrapy genspider qiubai www.qiushibaike.com)

3. 3 编写爬虫文件:

在步骤2执行完毕后,会在项目的spiders中生成一个应用名的py爬虫文件,文件源码如下:

importscrapyclassQiubaiSpider(scrapy.Spider):

name= 'qiubai' #应用名称

#允许爬取的域名(如果遇到非该域名的url则爬取不到数据)

allowed_domains = ['https://www.qiushibaike.com/']#起始爬取的url

start_urls = ['https://www.qiushibaike.com/']#访问起始URL并获取结果后的回调函数,该函数的response参数就是向起始的url发送请求后,获取的响应对象.该函数返回值必须为可迭代对象或者NUll

defparse(self, response):print(response.text) #获取字符串类型的响应内容

print(response.body)#获取字节类型的相应内容

3.4 设置修改settings.py配置文件相关配置:

#修改内容及其结果如下:

USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36' #伪装请求载体身份

ROBOTSTXT_OBEY= False #可以忽略或者不遵守robots协议

3.5 执行爬虫程序:

scrapy crawl  应用名称

#-*- coding: utf-8 -*-

importscrapyclassQiubaiSpider(scrapy.Spider):

name= 'qiubai'allowed_domains= ['https://www.qiushibaike.com/']

start_urls= ['https://www.qiushibaike.com/']defparse(self, response):#xpath为response中的方法,可以将xpath表达式直接作用于该函数中

odiv = response.xpath('//div[@id="content-left"]/div')

content_list= [] #用于存储解析到的数据

for div inodiv:#xpath函数返回的为列表,列表中存放的数据为Selector类型的数据。我们解析到的内容被封装在了Selector对象中,需要调用extract()函数将解析的内容从Selecor中取出。

author = div.xpath('.//div[@class="author clearfix"]/a/h2/text()')[0].extract()

content=div.xpath('.//div[@class="content"]/span/text()')[0].extract()#将解析到的内容封装到字典中

dic={'作者':author,'内容':content

}#将数据存储到content_list这个列表中

content_list.append(dic)return content_list

注意:

scrapy crawl 爬虫名称 :该种执行形式会显示执行的日志信息

scrapy crawl 爬虫名称 --nolog:该种执行形式不会显示执行的日志信息

python爬虫程序框架的理论是什么_Python网络爬虫(scrapy框架简介和基础应用)相关推荐

  1. python写爬虫之提取网页的内容(筛选)_Python网络爬虫项目:使用requests获取网页,通过BeautifulSoup提取数据...

    本次讲解通过requests获取某一个网站,网址:http://www.gxccedu.com/sp2017/zli/index.html 然后使用正则表达式提取页面中的"专利名称" ...

  2. python中data.find_all爬取网站为空列表_Python网络爬虫之Scrapy 框架-分布式【第二十九节】...

    1. 介绍scrapy-redis框架 scrapy-redis 一个三方的基于redis的分布式爬虫框架,配合scrapy使用,让爬虫具有了分布式爬取的功能. github地址: https://g ...

  3. python网络爬虫资源库名_Python网络爬虫

    网友NO.524767 Python网络爬虫与信息提取(实例讲解) 课程体系结构: 1.Requests框架:自动爬取HTML页面与自动网络请求提交 2.robots.txt:网络爬虫排除标准 3.B ...

  4. python网络爬虫与信息提取视频_Python网络爬虫与信息提取入门5

    Part19 实例5:IP地址归属地的自动查询 怎么查询一个IP地址的归属呢?比如说某一个IP地址他是来自于北京.上海还是美国呢?我们用一个python 程序来判断.当然你要判断一个地址的归属地,你必 ...

  5. python网络爬虫与信息提取_北京理工大学_Python网络爬虫与信息提取(一)

    学习 北京理工大学 嵩天 课程笔记 课程体系结构: 1.Requests框架:自动爬取HTML页面与自动网络请求提交 2.robots.txt:网络爬虫排除标准 3.BeautifulSoup框架:解 ...

  6. 爬虫python爬取页面请求_Python网络爬虫第三弹《爬取get请求的页面数据》

    一.urllib库 urllib是Python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求.其常被用到的子模块在Python3中的为urllib.request和urllib. ...

  7. Python可以这样学(第十季:网络爬虫实战)-董付国-专题视频课程

    Python可以这样学(第十季:网络爬虫实战)-83人已学习 课程介绍         陆续介绍和分享一些网络爬虫方面的案例,Python基础知识可以参考前面的"Python可以这样学&qu ...

  8. python 爬虫框架_Python网络爬虫-scrapy框架的使用

    1. Scrapy 1.1 Scrapy框架的安装 Scrapy是一个十分强大的爬虫框架,依赖的库比较多,至少需要依赖的库有Twisted .lxml和pyOpenSSL.在不同的平台环境下,它所依赖 ...

  9. Python爬虫从入门到放弃(十二)之 Scrapy框架的架构和原理

    原文地址https://www.cnblogs.com/zhaof/p/7173397.html 这一篇文章主要是为了对scrapy框架的工作流程以及各个组件功能的介绍 Scrapy目前已经可以很好的 ...

最新文章

  1. 清华团队将Transformer用到3D点云分割
  2. python的闭包及装饰器
  3. 我要做一个合格的网络工程师
  4. http请求502_从知乎页面的502说一说测试人员应该知道的HTTP协议状态码!
  5. 在mysql中REGEXP_在MySQL中使用RegExp中的列
  6. Java nginx 双向ssl_Nginx配置单项SSL以及双向SSL
  7. 学术杂谈|一篇所有研究生都该读的好文:阳光温热 科研静好!
  8. html5应用方法,9 个用来加速 HTML5 应用的方法
  9. matlab三相系统电阻折算,基于MATLAB三相异步电动机调压调速系统方案.doc
  10. Task watchdog got triggered错误
  11. MATLAB实现混淆矩阵
  12. kail如何进入root_Kali初次使用如何获得root权限
  13. python第三方库批量安装_使用Python批量安装第三方库
  14. GAGE USB信号采集卡
  15. 大智能时代,未来人工智能发展新趋势
  16. Unity隐身 观察隐身
  17. 关于原生js里报这个错:Cannot read properties of undefined (reading ‘classList‘) at HTMLLIElement.
  18. React:Redux和Flux
  19. 死磕 java线程系列之线程池深入解析——未来任务执行流程
  20. 胖哥食品网络诊断分析

热门文章

  1. entity framework mysql guid,c# – 自动生成不是Entity Framework中主键的GUID列
  2. 运行npm install命令的时候会发生什么?
  3. 云图说|华为数据安全中心,助你保障云上数据安全!
  4. 【华为云技术分享】数据管理服务DAS 之 数据库自动化运维功能展播4:慢SQL
  5. 昇腾AI处理器软件栈--张量加速引擎(TBE)
  6. c语言程序2048_C语言2048小游戏演示和说明
  7. 红橙Darren视频笔记 view的绘制流程(上) onMeasure测量代码分析 基于API27
  8. Head First设计模式读书笔记六 第七章上 适配器模式
  9. 虚拟机VMware下安装Linux系统,Python3.7之TensorFlow安装
  10. 【李宏毅机器学习】Transformer(p23) 学习笔记