2.Scrapy基本命令介绍
1.安装scrapy框架
a.安装wheel
pip install wheel -i https://pypi.douban.com/simple/
b.安装twisted
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ Twisted
c.安装scrapy
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ Scrapy
d.安装pywin32
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ pywin32
2.基本命令介绍
(1)新建项目
scrapy startproject 项目名
要在spiders包下新建一爬虫源文件 ------》创建爬虫文件
(1)cd 项目名
(2)scrapy genspider 爬虫文件名 域名
#注意爬虫文件名不可以和项目名相同。(可以有多个spider)
(2)运行爬虫:
#运行名为 spider文件名 的爬虫
scrapy crawl spider文件名 (注意:不要加.py后缀名)
#将爬到的数据导出为json文件
scrapy crawl spider文件名 -o xx.json
#也可导出csv文件
scrapy crawl spider文件名 -o xx.csv -t csv
#单独运行爬虫文件
scrapy runspider xx.py #区别:单独运行要进入到spider目录里,不走项目的settings的配置,走的全是自己的默认配置。
注:
运行scrapy想要直接在spider文件里右键run就运行
配置:run --->edit configrations---->(1)script path: E:\pachong\venv\Scripts\scrapy.exe(scrapy.exe所在路径)
---->(2)parameters: crawl usnews(crawl 爬虫文件名)
---->(3) working directory: E:\爬虫\qianfeng\3scrapy\qianmu(项目的目录)
后面直接run,就启动项目。
(3)scrapy shell
由于数据解析时需要不断的调试,为了方便,可以在控制台里进行调试。
具体方法:scrapy shell [某个url]
带一个url参数,将会自动请求这个url,并在请求成功后进入控制台。
控制台使用的是项目环境。
shell里命令:
fetch() # 请求url或者request对象,注意请求成功后会将当前作用域内的request和response对象重新赋值。
def f():
globals()['request'] = 1
f()
#此时再调request就是1了
#如request在控制台, locals() == globals() locals()是个字典
d = locals()
d['request'] = 2
#request 结果也是2 指向同一个地址空间
#此时如将request = 3,那么d['request']也跟着变为3
view(response) #会将请求页面保存成一个本地文件,可以直观看到爬取的页面
shelp() #打印出帮助信息
spider #相应的Spider类的实例。有可能是default,有可能是自定义的spider。符合创建规则就是自定义的
settings #是个对象,可以获取settings文件里的值
setting.get("BOT_NAME")
setting.getbool("HTTPCACHE_ENABLED")
settings.get("USER_AGENT") #'Scrapy/2.0.1 (+https://scrapy.org)'在scrapy包里的settings文件中默认设置的。在自己settings文件设置就会覆盖
crawler crawler #对象,包含spier,所有中间件、pipline和其他所有的 总称
#其他都可以通过crawler取出。
#如crawler.settings
#一个项目启动只有一个crawler对象,但可以有多个spider对象。
scrapy #就是scrapy模块
例子:
比如要对某个页面的数据进行提取,不断测试解析的是否正确
scrapy shell https://url.com #进入控制台,并且爬取这个url
shelp() #查看可用的命令
response.xpath() #直接测试
(4)终端里scrapy命令
scrapy crawl/runsipder #启动项目
scrapy view url名称 #也是一个用项目配置下载网页,用浏览器打开网页-----》一般用在网页是动态的来调试(看抓到的和浏览器看到的是否一样)
scrapy fetch url名称 #用项目的配置下载网页,输出到控制台上
srapy list #列出有多少个spider
3.Spider介绍
Spider 是自己定义的类,Scrapy 用它来从网页里抓取内容,并解析抓取的结果。自定义Spider类继承scrapy.Spider,定义 Spider 的名称和起始请求,以及怎样处理爬取后的结果的方法。
class DiscoverySpider(scrapy.Spider):
name = 'discovery'
allowed_domains = ['xinpianchang.com','openapi-vtom.vmovier.com']
start_urls = ['https://www.xinpianchang.com/channel/index/type-/sort-like/duration_type-0/resolution_type-/page-1'] def parse(self, response):
pass
(1)name,它是每个项目唯一的名字,用来区分不同的 Spider。
(2)allowed_domains,它是允许爬取的域名,如果初始或后续的请求链接不是这个域名下的,则请求链接会被过滤掉。
(3)start_urls,它包含了 Spider 在启动时爬取的 url 列表,初始请求是由它来定义的。
(4)parse:
Spider 的一个方法。
解析返回的响应、提取数据或者进一步生成要处理的请求。
第一个请求定义在start_requests()方法内,默认从start_urls列表中获得url地址来生成Request请求,默认的回调函数是parse方法。回调函数在下载完成返回response时自动触发
parse返回值4种:(yield)
a.包含解析数据的字典
b.Item对象
c.新的Request对象(新的Requests也需要指定一个回调函数)
d.或者是可迭代对象(包含Items或Request)
4.Item介绍
Item 是保存爬取数据的容器,它的使用方法和字典类似。不过,相比字典,Item 多了额外的保护机制,可以避免拼写错误或者定义字段错误。
创建 Item 需要继承 scrapy.Item 类,并且定义类型为 scrapy.Field 的字段。
创建的Item在自定义的Spider类中被实例化,并且以字典的形式存入解析的数据,然后yield,返回给引擎,再给管道,进行持久化存储。
注意:yield的数据不做任何操作,会在窗口直接显示。也可以直接导入到文件中。
5. Item Pipeline介绍
Item Pipeline 为项目管道。当 Item 生成后,它会自动被送到 Item Pipeline 进行处理。用 Item Pipeline 来做如下操作:
(1)清洗 HTML 数据
(2)验证爬取数据,检查爬取字段
(3)查重并丢弃重复内容
(4)将爬取结果储存到数据库
方法:自定义Pipeline类,里面有open_spider close_spider 和process_spider方法。
open_spider和close_spider分别只在创建和关闭spider时调用一次,process_spider则每产生一个item调用一次,主要执行了数据插入操作。
2.Scrapy基本命令介绍的更多相关文章
- 《The Linux Command Line》 读书笔记01 基本命令介绍
<The Linux Command Line> 读书笔记01 基本命令介绍 1. What is the Shell? The Shell is a program that takes ...
- scrapy -->CrawlSpider 介绍
scrapy -->CrawlSpider 介绍 1.首先,通过crawl 模板新建爬虫: scrapy genspider -t crawl lagou www.lagou.com 创建出来的 ...
- 第三百二十四节,web爬虫,scrapy模块介绍与使用
第三百二十四节,web爬虫,scrapy模块介绍与使用 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中.其最初是为了 ...
- selenium模块使用详解、打码平台使用、xpath使用、使用selenium爬取京东商品信息、scrapy框架介绍与安装
今日内容概要 selenium的使用 打码平台使用 xpath使用 爬取京东商品信息 scrapy 介绍和安装 内容详细 1.selenium模块的使用 # 之前咱们学requests,可以发送htt ...
- 爬虫之Scrapy框架介绍
Scrapy介绍 Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内 ...
- Scrapy基本命令
全局命令,不用在项目中运行fetch:爬取网页,不依赖爬虫项目直接爬网页信息,并显示爬取过程scrapy命令格式:scrapy 命令名 --参数,可能通过--控制,例如:scrapy fetch -h ...
- 爬虫-windows下安装Scrapy及scrapy模块介绍
一:安装wheel wheel介绍 二:安装twisted twisted是由python编写的一款基于事件驱动的网络引擎,使用twisted模块将python的异步请求(异步模型介绍)成为可能且简 ...
- Git的基本命令介绍
Git的安装 进入官网下载系统所需要的版本 官网地址:https://git-scm.com/downloads 点击下载按钮官方网站一般会根据操作系统的自动下载所需要的Git版本. 下载完成后,点 ...
- Scrapy的介绍和用法
转载:https://www.toutiao.com/i6493421606306578958/ Scrapy是爬虫必须学会的一个框架!他确实很难搞的透彻!今天就不给大家全部介绍了!还是介绍其中的Cr ...
随机推荐
- 理解分布式一致性:Paxos协议之Generalized Paxos & Byzantine Paxos
理解分布式一致性:Paxos协议之Generalized Paxos & Byzantine Paxos Generalized Paxos Byzantine Paxos Byzantine ...
- Springboot以Jetty为容器实现http重定向到https
1 简介 之前讲解的Springboot整合https用的是tomcat作为容器,tomcat也是一个流行多年的老牌Java容器了.但针对不同的场景,还是会有不同的选择,如Jetty.Jetty是架构 ...
- java 之 enum(枚举)
推荐博客 http://blog.csdn.net/javazejian/article/details/71333103
- nodejs实现定时爬取微博热搜
The summer is coming " 我知道,那些夏天,就像青春一样回不来. - 宋冬野 青春是回不来了,倒是要准备渡过在西安的第三个夏天了. 废话 我发现,自己对 coding 这 ...
- 深度解析国内首个云原生数据库POLARDB的“王者荣耀”
随着移动互联网.电子商务的高速发展,被使用最多的企业级开源数据系统MySQL面临着巨大挑战--为迎接"双11"的高并发要提前做好分库分表;用户不断激增要将读写分离才能应对每天上亿次 ...
- Java的循环语句
一.while 循环 while(循环条件){ 循环操作语句 } * 循环3要素: 变量的初值.变量的判断.变量的更新 * 缺少循环变量的更新,循环将一直进行下去 public class Whlie ...
- LCA 学习总结
怎么说,LCA裸题直接套板子,大家都会做,这样的题没必要看,剩下的题发先LCA只是一个工具就像是搜索一样,只是一个工具而不是一种算法,所以借助这套工具在其图论问题如最长路,数据结构等问题上再去发挥作用 ...
- B - Dining POJ - 3281 网络流
Cows are such finicky eaters. Each cow has a preference for certain foods and drinks, and she will c ...
- 面试官:你说你懂动态代理,那你知道为什么JDK中的代理类都要继承Proxy吗?
之前我已经写过了关于动态代理的两篇文章,本来以为这块应该没啥问题,没想到今天又被难住了- 太难了!!! 之前文章的链接: 动态代理学习(一)自己动手模拟JDK动态代理. 动态代理学习(二)JDK动态代 ...
- leetcode必刷200题
一.数据结构相关 链表 1. 相交链表 2. 反转链表 3. 合并两个有序链表 4. 删除排序链表中的重复元素 5. 删除链表的倒数第 n 个节点 6. 两两交换链表中的节点 7. 两数相加 II 8 ...