Python爬虫之Scrapy框架爬虫实战
Python爬虫中Scrapy框架应用非常广泛,经常被人用于属于挖掘、检测以及自动化测试类项目,为啥说Scrapy框架作为半成品我们又该如何利用好呢 ?下面的实战案例值得大家看看。
目录:
1、Scrapy框架之命令行
2、项目实现
Scrapy框架之命令行
Scrapy是为持续运行设计的专业爬虫框架,提供操作的Scrapy命令行。
Scrapy爬虫的常用命令:
- scrapy<command>[option][args]#command为Scrapy命令
常用命令:(图1)
至于为什么要用命令行,主要是我们用命令行更方便操作,也适合自动化和脚本控制。至于用Scrapy框架,一般也是较大型的项目,程序员对于命令行也更容易上手。
首先介绍一下相关文件的作用,方便我们到时候修改相关代码。
scrapy.cfg:部署Scrapy爬虫的配置文件
demo:Scrapy框架的用户自定义Python代码
其中,在项目文件根目录里面的demo文件中,有如下文件以及相关的作用:
__init__.py:初始化脚本
items.py:Items代码模板(继承类)
middlewares.py:Middlewares代码模板(继承类)
Pipelines.py:Pipelines代码模块(继承类)
settings.py:Scrapy爬虫的配置文件(优化需要改动)
spiders:代码模板目录(继承类)
在Spider文件目录下包含如下文件:
__init__.py:初始文件。无需修改
__pycache_:缓存目录,无需修改
项目实现
接下来我们开始第一次的实操,大致步骤如下:
1、建立一个Scrapy爬虫工程
2、在工程中产生一个Scrapy爬虫
3、配置产生的spider爬虫
4、运行爬虫,获取网页
1、新建项目
首先,我们得先新建一个项目文件。
这里需要我们打开Git,至于Git的安装以及简单使用我们之前在折腾博客时有了解过:用Hexo+Github Pages搭建私人博客(第二站)
首先打开Git定位到你要爬虫项目的地址:
比如小编我是要定位到E盘,则输入cd E:(图2)
定位到目标地址后,我们便可以开始新建项目啦~
To:dir命令为显示目录和子目录的列表。
2、新建Scrapy
接下来我们输入如下命令新建一个名为newdemo的爬虫项目:
- scrapy startproject newdemo
项目生成后我们可以看见在根目录生成了一个项目文件,也是叫做newdemo,那么接下来我们需要对其中的文件进行编辑。(图3)
3、配置Spider爬虫
接下来我们需要输入如下命令:
- scrapy genspider demo python123.io
相关运行结果如下:(图4)
然后会在newdemo\spiders目录下生成一个demo.py文件 其中,parse(用于处理响应,解析内容形成字典,发现新的URL爬取请求)(图5)
修改demo文件里面的代码,修改后如下:
- import scrapy
- #继承Scrapy.Spider类的子类
- class DemoSpider(scrapy.Spider):
- name = 'demo'#当前爬虫命名为demo
- #allowed_domains = ['python123.io'] #用户在命令行提交给爬虫的域名
- start_urls = ['http://python123.io/ws/demo.html']#爬取内容的初始页面#parse()用于处理响应,解析内容形成字典,发现新的URL爬取请求
- def parse(self, response):
- fname=response.url.split('/')[-1]
- with open (fname,'wb') as f:
- f.write(response.body)
- self.log('save file %s' % name)
4、运行项目
最后一步便是运行该爬虫项目,命令为:
- scrapy crawl demo
相关运行结果如下:(图6)
直到最后在newdemo文件目录下出现demo.html文件,说明此项目运行成功。
打开demo.html文件显示如下:(图7)
Python爬虫系列,持续更新...
Python爬虫之Scrapy框架爬虫实战的更多相关文章
- Python爬虫进阶(Scrapy框架爬虫)
准备工作: 配置环境问题什么的我昨天已经写了,那么今天直接安装三个库 首先第一步: ...
- Python网络爬虫之Scrapy框架(CrawlSpider)
目录 Python网络爬虫之Scrapy框架(CrawlSpider) CrawlSpider使用 爬取糗事百科糗图板块的所有页码数据 Python网络爬虫之Scrapy框架(CrawlSpider) ...
- Python逆向爬虫之scrapy框架,非常详细
爬虫系列目录 目录 Python逆向爬虫之scrapy框架,非常详细 一.爬虫入门 1.1 定义需求 1.2 需求分析 1.2.1 下载某个页面上所有的图片 1.2.2 分页 1.2.3 进行下载图片 ...
- Scrapy框架-----爬虫
说明:文章是本人读了崔庆才的Python3---网络爬虫开发实战,做的简单整理,希望能帮助正在学习的小伙伴~~ 1. 准备工作: 安装Scrapy框架.MongoDB和PyMongo库,如果没有安装, ...
- 第三百三十二节,web爬虫讲解2—Scrapy框架爬虫—Scrapy使用
第三百三十二节,web爬虫讲解2—Scrapy框架爬虫—Scrapy使用 xpath表达式 //x 表示向下查找n层指定标签,如://div 表示查找所有div标签 /x 表示向下查找一层指定的标签 ...
- 第三百三十一节,web爬虫讲解2—Scrapy框架爬虫—Scrapy安装—Scrapy指令
第三百三十一节,web爬虫讲解2—Scrapy框架爬虫—Scrapy安装—Scrapy指令 Scrapy框架安装 1.首先,终端执行命令升级pip: python -m pip install --u ...
- 第三百三十五节,web爬虫讲解2—Scrapy框架爬虫—豆瓣登录与利用打码接口实现自动识别验证码
第三百三十五节,web爬虫讲解2—Scrapy框架爬虫—豆瓣登录与利用打码接口实现自动识别验证码 打码接口文件 # -*- coding: cp936 -*- import sys import os ...
- 第三百三十四节,web爬虫讲解2—Scrapy框架爬虫—Scrapy爬取百度新闻,爬取Ajax动态生成的信息
第三百三十四节,web爬虫讲解2—Scrapy框架爬虫—Scrapy爬取百度新闻,爬取Ajax动态生成的信息 crapy爬取百度新闻,爬取Ajax动态生成的信息,抓取百度新闻首页的新闻rul地址 有多 ...
- 第三百三十三节,web爬虫讲解2—Scrapy框架爬虫—Scrapy模拟浏览器登录—获取Scrapy框架Cookies
第三百三十三节,web爬虫讲解2—Scrapy框架爬虫—Scrapy模拟浏览器登录 模拟浏览器登录 start_requests()方法,可以返回一个请求给爬虫的起始网站,这个返回的请求相当于star ...
- 爬虫06 /scrapy框架
爬虫06 /scrapy框架 目录 爬虫06 /scrapy框架 1. scrapy概述/安装 2. 基本使用 1. 创建工程 2. 数据分析 3. 持久化存储 3. 全栈数据的爬取 4. 五大核心组 ...
随机推荐
- python38
Python break 语句 Python break语句,就像在C语言中,打破了最小封闭for或while循环. break语句用来终止循环语句,即循环条件没有False条件或者序列还没被完全递归 ...
- [js函数] storageManager
import _get from 'lodash.get'; import _set from 'lodash.set'; import _debounce from 'lodash.debounce ...
- Java基础__05.网络编程
通信协议 即约定网络通信时的一些内容. TCP和UDP对比 TCP:类比打电话 连接稳定 三次握手.四次挥手 客户端.服务端 传输完成.释放连接,效率低 UDP:类比发短信 不连接.不稳定: 客户端. ...
- File.createTempFile()
File.createTempFile()的两个参数,是前缀和后缀,临时文件的文件名,会在前缀和后缀中各截取一部分,再拼接上随机数进行生成: 推荐手动指定目录,尽量指定到项目路径下,默认的磁盘位置,有 ...
- 【Windows】IP 地址变为 169.254.x.x 的解决方法
最近每次开机 IP 地址都会自动跳至 169.254.x.x 段,连接不上网络,设置了固定 IP 也会跳段.因此找到以下解决方法: 『IP地址变成169.254.x.x 和固定ip两个IP地址的解决办 ...
- 微信公众号 H5授权登录
首先微信公众号 必须是服务号,订阅号没有 "网页授权获取用户基本信息" 没有这个权限.服务号也必须认证后才有这个权限
- 像MIUI一样做Zabbix二次开发(4)——乐维监控定制Zabbix的方法
做监控源于我们早期做运维服务的必然需求,我们的愿望是基于Zabbix这个强大开源平台,结合实际一线运维工作的需要+ITIL等运维理论,做成类似MIUI一样的开发.易用.实用.人性和美观的全新的监控平台 ...
- constexpr和const
const表示一个变量的值不能改变,这个值可以使运行期间得到的const int sz = get_size(); constexpr是提示编译器,该值可以在编译期间就计算出来,并进行替换,不用等到运 ...
- leetcode 310. 最小高度树 【时间击败70.67%】 【内存击败89.04%】
数组替代队列,从超时到击败70%,用tree[0]替代new一个新的ArrayList,上升10% 思想是遍历一遍,删除度为1的节点,答案只可能为1或2 1 public List<Intege ...
- ABAP 报表的两种下钻功能
在报表开发中往往会由需求要求跳转,SAP中提供了一些下钻的方式. 这里主要介绍两种 submit 和 call transaction submit 引用的是报表名称,以自开发报表居多 call tr ...