2019.04.23 Scrapy框架
1.环境搭建
2.选择需要的.whl文件下载,一般选择最后的,感觉意思是最近更新的包,以下是.whl文件下载链接地址:
http://www.lfd.uci.edu/~gohlke/pythonlibs/
1.python:表示包文件。
2.whl 格式:这是一个压缩包,在其中包含了py文件,以及经过编译的pyd文件。
这个格式可以使文件在不具备编译环境的情况下,选择合适自己的python环境进行安装。
安装方法如下
进入命令行输入:pip install xxxx.whl
升级方法如下
进入命令行输入:pip install -U xxxx.whl
因为这个Scarpy是依赖这个Twised这个的 所以可以安装这个whl 文件 Scarpy依赖环境
E:\Develop\Scripts 这个目录下 cmd pip install 安装
还有一种方法是安装 visualcppbuildtools_full 不过这个安装可能有点久
pip install scrapy
然后找到相应的 whl Twised.whl 安装就好了 去到对应的路径安装
2.基本使用
因为不同于Django,flask 新建项目有选择的 所以我们只能通过命令来创建
scrapy startproject first-scrapy
创建一个爬虫 scrapy genspider 爬虫名 爬虫的地址 baidu baidu.com
name: 它定义了蜘蛛的唯一名称
allowed_domains: 它包含了蜘蛛抓取的基本URL;(只认定这个域名)
start-urls: 蜘蛛开始爬行的URL列表;
parse(): 这是提取并解析刮下数据的方法;
运行爬虫 scrapy crawl 爬虫名
3.数据提取
第一步一定要记得修改User-Agent
不加这个 .extract返回一个unicode字符创 Selector返回的是选择器 为什么会返回的是选择器呢?这样还可以继续Xpath筛选
利用框架如何快速的爬取资料:先创建scrapy项目 设置请求头User-Agent 设置url
利用Scrapy自带的Xpath选择器筛选 输出即可 这是最简单的 输出到控制台
既然可以输出到控制台那么其实保存都文件也容易
json.cn
.csv 是一种表格的形式 可以用excel打开
在哪了提取这些数据 在response啊 可以直接
scrapy crawl zhongheng -o book.json
4.如何推送到 pipeline
通过yield
然后item接受
打印item 但是和在spider中的输入输出不一样呀 并没有打印这个item 没有白色的日志
在setting中打开ITEM_PIPELINES 他是一个字典,前面是item_pipeline路径,数字表示优先级
“w”会覆盖以前的信息 “a”会追加
有一个问题是:文件会重复开启 如何让文件只开启一次呢
这就是利用pipeline保存我们数据的问题
在item模板中 无论什么数据类型
都可以用 scrapy fielter
这回推送的Item中的类对象 还是通过yield推送 所以还要记得转字典,也要记得转字符串
6.Scrapy 的细节
可以爬取 不同的网页,不同类型的网页,只需要写一个spider就好了。
但是我要怎么处理筛选呢? 通过response的url来判断 这是广度爬取
还有一个深度 一种爬虫方式。就是先遍历完左边的再慢慢的推到右边
小说练习
1.第一种找url规律的方法 看是否递增啥的
2.将所有的url都拿出来 挨个去访问
有一个叫文件流的东西,就是当只有内存的满了才会存到文件中
那怎么让它实时的存储呢 那就要用flush了
访问的间隔 download_delay = 3
第一部分完了
大概的知道这个框架的运行流程了,也知道怎么用xpath了也可以连续的
爬取了,如何推送,如何的保存这些数据。这应该是小的一部分吧
在继承与CrawlSpider中 restrict 提取到那个标签就可以了
创建新的spider 用 -t crawl 选择使用这个模板
copy xpath 这么使用吗
2019.04.23 Scrapy框架的更多相关文章
- Python 爬取 北京市政府首都之窗信件列表-[Scrapy框架](2020年寒假小目标04)
日期:2020.01.22 博客期:130 星期三 [代码说明,如果要使用此页代码,必须在本博客页面评论区给予说明] //博客总体说明 1.准备工作(本期博客) 2.爬取工作 3.数据处理 4.信息展 ...
- Scrapy爬虫框架(实战篇)【Scrapy框架对接Splash抓取javaScript动态渲染页面】
(1).前言 动态页面:HTML文档中的部分是由客户端运行JS脚本生成的,即服务器生成部分HTML文档内容,其余的再由客户端生成 静态页面:整个HTML文档是在服务器端生成的,即服务器生成好了,再发送 ...
- 学习scrapy框架爬小说
一.背景:近期学习python爬虫技术,感觉挺有趣.由于手动自制爬虫感觉效率低,了解到爬虫界有先进的工具可用,尝试学学scrapy爬虫框架的使用. 二.环境:centos7,python3.7,scr ...
- Python爬虫Scrapy框架入门(2)
本文是跟着大神博客,尝试从网站上爬一堆东西,一堆你懂得的东西 附上原创链接: http://www.cnblogs.com/qiyeboy/p/5428240.html 基本思路是,查看网页元素,填写 ...
- Python使用Scrapy框架爬取数据存入CSV文件(Python爬虫实战4)
1. Scrapy框架 Scrapy是python下实现爬虫功能的框架,能够将数据解析.数据处理.数据存储合为一体功能的爬虫框架. 2. Scrapy安装 1. 安装依赖包 yum install g ...
- 爬虫基础(五)-----scrapy框架简介
---------------------------------------------------摆脱穷人思维 <五> :拓展自己的视野,适当做一些眼前''无用''的事情,防止进入只关 ...
- Scrapy 框架简介
Scrapy 框架 介绍 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,使用它可以以快速.简单.可扩展的方式从网站中提取所需的数据.但目前Scrapy的 ...
- [Python][Scrapy 框架] Python3 Scrapy的安装
1.方法(只介绍 pip 方式安装) PS.不清楚 pip(easy_install) 可以百度或留言. cmd命令: (直接可以 pip,而不用跳转到 pip.exe目录下,是因为把所在目录加入 P ...
- 解读Scrapy框架
Scrapy框架基础:Twsited Scrapy内部基于事件循环的机制实现爬虫的并发.原来: url_list = ['http://www.baidu.com','http://www.baidu ...
随机推荐
- RSF 分布式 RPC 服务框架的分层设计
RSF 是个什么东西? 一个高可用.高性能.轻量级的分布式服务框架.支持容灾.负载均衡.集群.一个典型的应用场景是,将同一个服务部署在多个Server上提供 request.response 消息通知 ...
- 团队项目——NABCD
团队名称:天码行空 团队项目名称:天码记账 团队口号:彰明往事,考察未来 发布后一周内用户量:1千 N(Need)需求 这个软件主要解决了大学生管理自己财务状况的问题,随着手机支付的日趋流行大家对财务 ...
- 饮冰三年-人工智能-Python-21 Python数据库MySql
一:下载与安装 1:下载地址:https://dev.mysql.com/downloads/mysql/ 2:安装MySql 打开下载文件解压到指定文件目录.(我这里解压目录为D:\MySql\my ...
- SqlServer数据库重命名报错误:5030
无法重命名 KLENN 无法用排他锁锁定该数据库,以执行该操作(错误:5030) 解决办法: 将数据库设置为单用户模式 (单用户模式指定一次只有一个用户可访问数据库,该模式通常用于维护操作. ) 1. ...
- vba 读取数据库
1.安装数据库 2.创建数据源 Private Sub Worksheet_Change(ByVal Target As Range) Then Call mySQL End If End Sub P ...
- PyCharm 怎么查看 Python 的变量类型和变量内容
一.在程序的某一行添加断点 二.选择 debug 程序
- Spark之join、leftOuterJoin、rightOuterJoin及fullOuterJoin
Spark的join与mysql的join类似,mysql的join是将表与表之间连接查询,spark中join是将RDD数据集进行连接,Spark主要有join.leftOuterJoin.righ ...
- 在Node.js中使用ffi调用dll
类似的文章还是比较多的,但或多或少有一些问题没有解决,在此我将其整合并分享给大家: 测试环境: Node.js 9.9.0 VisualStudio 2015 "ffi": &qu ...
- 【JAVA基础】一:聊聊笔试常见到的 “==、equal” 比较是否相等的内在差别
开始本文之前,先让我们记住一个口诀(这个口诀只针对基础的类比如String.Integer等,如果是自定义的类,需要看equal的具体实现): equal比较其值,== 比较地址 这两天在走查代码的时 ...
- Tutorial中的Hello2代码
该hello2应用程序是一个Web模块,它使用Java Servlet技术来显示问候语和响应. 1.GreetingServlet.java源码文件: 1 @WebServlet("/gre ...