Crawlab准备之python+scrapy环境搭建
阅读文本大概需要3分钟。
上篇《分布式爬虫管理平台Crawlab开发搭建》把爬虫的管理后台搭建起来了;捣鼓一番发现要真正爬取数据还有下不少的功夫。这篇看看怎么搭建python+scrapy环境。
0x01:安装Python3
- 下载python安装包,具体版本根据自己的系统要求 https://www.python.org/downloads/windows/
- 下载安装完成后直接cmd输入python,可正常查看版本
注:安装过程中请注意一定要请勾选pip安装并加入到环境变量中,否则后续无法正常安装第三方类库。
0x02:安装爬虫所需的一些常用类库
- 安装 selenimu 自动化web包,cmd进入任意目录,执行
pip install selenium
- 安装 pymysql 连接mysql包,cmd进入任意目录,执行。方便以后把爬取的数据插入数据库 pip install pymysql
- 安装 pillow 图片处理包 pip install pillow
备注:pillow官网
https://pillow.readthedocs.io/en/latest/installation.html
- 安装 pypiwin32 操作底层dll包 pip install pypiwin32
- 安装 requests 发送web请求包 pip install requests
- 安装 scrapy 爬虫框架包 pip install scrapy
备注:安装爬虫框架必须依赖的第三方类库Twisted,在使用pip安装时会出现下载文件失败而无法安装问题,可以先下载Twisted安装文件。然后使用pip install安装Twisted。
pip install 下载Twisted文件绝对路径
下载地址如下(下载与Python版本匹配的whl文件):
https://www.lfd.uci.edu/~gohlke/pythonlibs/
- 安装解析网页内容包 pip install bs4
0x03:验证scrapy 是否安装成功
进入cmd,输入 scrapy 查看scrapy是否安装成功
0x04:创建爬虫项目
- 创建项目,只需一行命令即可创建名为 tutorial 的Scrapy项目:
scrapy startproject tutorial
tutorial项目的目录结构大概如下:
- 创建爬虫的模板文件 进入 ./tutorial/tutorial 执行: scrapy genspider QuoteSpider "http://www.baidu.com"
QuoteSpider是文件名,http://www.baidu.com是要爬取的域名, ./tutorial/tutorial/spiders 目录下生成一个QuoteSpider.py文件。文件内容如下:
修改一下QuoteSpider.py文件:
import scrapy
class QuotespiderSpider(scrapy.Spider):
name = 'QuoteSpider'
# 允许爬取的域名
# allowed_domains = ['landchina.mnr.gov.cn']
start_urls = ['http://landchina.mnr.gov.cn/scjy/tdzr/index_1.htm']
def parse(self, response): # resonse相当于从网络中返回内容所存储的或对应的对象
fname = response.url.split('/')[-1] # 定义文件名字,把response中的内容写到一个html文件中
with open(fname, 'wb') as f: # 从响应的url中提取文件名字作为保存为本地的文件名,然后将返回的内容保存为文件
f.write(response.body)
self.log('Saved file %s.' % fname) # self.log是运行日志,不是必要的
这个代码很简单就是爬取一个页面,并保存到文件中。
执行tutorial爬虫项目,在cmd目录中执行
scrapy crawl QuoteSpider
执行日志如下
可以在 tutorial 目录下看的 index_1.htm 文件;该文件就是爬取到的内容。
- SQL Server 性能优化之——T-SQL NOT IN 和 NOT Exists
- SQL Server 性能优化之——重复索引
- SQL Server 性能优化之——系统化方法提高性能
- C# 调用PowerShell方法
- 使用Visual Studio 2010 一步一步创建Powershell Module 和 Cmdlet
- [SQLServer大对象]——FileTable初体验
- JavaScript闭包,只学这篇就会了
- [数据库基础]——编码标准之格式
- [数据库基础]——编码标准之结构
- 2017前端开发手册三-前端职位描述
- [.NET自我学习]Delegate 泛型
- [数据库基础]——图解JOIN
- ubuntu搭建内网穿透服务Ngrok
- SQL Server 性能优化之——T-SQL 临时表、表变量、UNION
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- node.js + postgres 从注入到Getshell
- ELK-logstash-6.3.2部署
- K8S节点异常怎么办?TKE"节点健康检查和自愈"来帮忙
- ELK-logstash-6.3.2-常用配置
- ELK-elkstack-使用消息队列
- kafka_2.11-2.0.0_安装部署
- 谈escapeshellarg绕过与参数注入漏洞
- Django debug page XSS漏洞(CVE-2017-12794)分析
- kafka_2.11-2.0.0_常用操作
- shell脚本:通过域名获取证书的过期时间
- Shell按行读取文件的3种方法
- 客户端 session 导致的安全问题
- Shell脚本常用模板
- 利用最新Apache解析漏洞(CVE-2017-15715)绕过上传黑名单
- GitHub-创建仓库与本地同步