Win10 64位+Eclipse+Python3.6.1+Scrapy1.4.0爬虫框架搭建及简单实例
Posted 江苏银行融创智库大数据应用
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Win10 64位+Eclipse+Python3.6.1+Scrapy1.4.0爬虫框架搭建及简单实例相关的知识,希望对你有一定的参考价值。
一、Scrapy简介
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中。其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,也可以应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。Scrapy 使用了 Twisted异步网络库来处理网络通讯。整体架构大致如下:
● 引擎(Scrapy Engine)
用来处理整个系统的数据流处理,触发事务。
●
用来接受引擎发过来的请求,压入队列中,并在引擎再次请求的时候返回。
●
用于下载网页内容,并将网页内容返回给蜘蛛。
●
蜘蛛是主要干活的,用它来制订特定域名或网页的解析规则。编写用于分析response并提取item
(即获取到 的 item)或额外跟进的URL的类。每个spider负责处理一个特定(或一些)网站。
●
负责处理有蜘蛛从网页中抽取的项目,他的主要任务是清晰、验证和存储数据。当页面被蜘蛛解析后,
将被发送到项目管道,并经过几个特定的次序处理数据。
●
位于Scrapy引擎和下载器之间的钩子框架,主要是处理Scrapy引擎与下载器之间的请求及响应。
●
介于Scrapy引擎和蜘蛛之间的钩子框架,主要工作是处理蜘蛛的响应输入和请求输出。
●
介于Scrapy引擎和调度之间的中间件,从Scrapy引擎发送到调度的请求和响应。
Scrapy运行流程大概如下:
引擎从调度器中取出一个链接(URL)用于接下来的抓取
引擎把URL封装成一个请求(Request)传给下载器
下载器把资源下载下来,并封装成应答包(Response)
爬虫解析Response
解析出实体(Item),则交给实体管道进行进一步的处理
解析出的是链接(URL),则把URL交给调度器等待抓取
二、Eclipse+pydev环境搭建
1、Eclipse安装需要Java环境,如果还没有安装Java环境的请先去下载安装JDK,我用的是jdk-7u25-windows-x64.exe,配置环境变量:
JAVA_HOME:C:\Program Files\Java\jdk1.7.0_25
CLASSPATH:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
PATH:增加 ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
2、官网下载适合自己操作系统的Eclipse http://www.eclipse.org/downloads/,运行安装
3、官网下载https://www.python.org/downloads/
4、Eclipse开发Python程序需要安装pydev:
(1)在线安装:
打开Eclipse,选择【Help】-【Install New Software】,在弹出的对话框中,点击Add按钮,添加新的安装源:
在Location处填写安装源的网址(http://pydev.org/updates),并为之取一个名字填写在Name处,比如我这里写的是PyDev。
把【connect all update sites during install to find required software】的勾选去掉,否则在安装新插件时会联网寻找所有可能的更新站点搜索,导致安装时间不可预估,并可能导致安装失败。
确定后可以看到一个Pending过程,然后得到如下图所示的插件:
勾选后,点击Next进行安装。
(2)离线安装
https://sourceforge.net/projects/pydev/files/pydev/直接下载的离线包解压,得到plugins和features文件夹,放到Eclipse的dropins目录下。重启Eclipse,PyDev插件即可安装成功。
(3)配置pydev
安装好PyDev插件后,还并不能正常使用,还需要配置Python的解释器。打开Eclipse,选择【Window】-【Preferences】,找到【PyDev】,选择其中的【Interpreter – Python】。点击【New】,添加一个系统里已有的Python解释器的位置。确定后会经过短暂的处理,得到它的Libraries、Buildins等。
三、Scrapy环境搭建
1、下载依赖包: http://download.csdn.net/detail/u011781521/9815204
2、安装依赖包:进入cmd命令行模式,切换到依赖包所在目录,运行以下命令
pip install lxml-3.7.3-cp36-cp36m-win_amd64.whl
pip install zope.interface-4.3.3-cp36-cp36m-win_amd64.whl
pip install pywin32-221-cp36-cp36m-win_amd64.whl
pip install Twisted-17.1.0-cp36-cp36m-win_amd64.whl
pip install pyOpenSSL
3、验证Scrapy依赖项是否安装成功的方法:进入cmd命令行模式,输入python,进入python开发模式,执行以下命令:
执行import lxml,如果没报错,则说明lxml安装成功。
执行import twisted,如果没报错,则说明twisted安装成功。
执行import OpenSSL,如果没报错,则说明OpenSSL安装成功。
执行import zope.interface,如果没报错,则说明zope.interface安装成功。
4、安装Scrapy:cmd命令行模式,执行pip install Scrapy
注意:这里要看版本的兼容性,Scrapy1.3、1.4等和Twisted-17兼容,Scrapy1.1和 Twisted-16兼容,不然会一直报错,这里我调试了一天。
5、cmd命令行模式执行pip list可以查看所有安装包的版本。
以上所有需准备的开发环境就完成了,下面就可以进入开发阶段。
四、简单实例:爬美剧天堂前100最新(http://www.meijutt.com/new100.html)
1、在Eclipse新建一个PyDev Project项目
2、cmd命令行下执行以下命令创建工程:
scrapy startproject movie
3、进入到movie目录下执行以下命令创建爬虫程序:
cd movie
scrapy genspider meiju meijutt.com
4、将movie下所有内容拷到第一步新建的PyDev Project目录下,在Eclipse刷新,结构如下图:
scrapy.cfg 项目的配置信息,主要为Scrapy命令行工具提供一个基础的配置信息。(真正爬虫相关的配置信息在settings.py文件中)
items.py 设置数据存储模板,用于结构化数据,如:Django的Model
pipelines 数据处理行为,如:一般结构化的数据持久化
settings.py 配置文件,如:递归的层数、并发数,延迟下载等
spiders 爬虫目录,如:创建文件,编写爬虫规则
注意:一般创建爬虫文件时,以网站域名命名
5、设置数据存储模板:items.py
import scrapy
class
MovieItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
name = scrapy.Field()
6、编写爬虫:meiju.py
# -*- coding: utf-8 -*-
import scrapy
from
movie.items import MovieItem
class
MeijuSpider(scrapy.Spider):
name =
"meiju"
allowed_domains = [
"meijutt.com"
]
start_urls = [
'http://www.meijutt.com/new100.html'
]
def parse(self, response):
movies = response.xpath(
'//ul[@class="top-list fn-clear"]/li'
)
for
each_movie
in
movies:
item = MovieItem()
item[
'name'
] = each_movie.xpath(
'./h5/a/@title'
).extract()[0]
yield item
7、设置配置文件:settings.py修改ITEM_PIPELINES 为如下内容
ITEM_PIPELINES = {
'movie.pipelines.MoviePipeline'
:100}
8、编写数据处理脚本:pipelines.py
class
MoviePipeline(
object
):
def process_item(self, item, spider):
with open(
"my_meiju.txt"
,
'a'
)
as
fp:
fp.write(item[
'name'
].encode(
"utf8"
) +
'\n'
)
9、执行爬虫:
(1)在movies目录下新建cmdline.py,编写以下内容
import scrapy.cmdline
if __name__ == '__main__':
scrapy.cmdline.execute(argv=['scrapy','crawl','meiju'])
(2)运行配置:Eclipse-Run-Run configuration,如图
(3)点击Run,开始爬虫,结果如下图:
以上是关于Win10 64位+Eclipse+Python3.6.1+Scrapy1.4.0爬虫框架搭建及简单实例的主要内容,如果未能解决你的问题,请参考以下文章
win7&64位&python3.6 如何安装stanfordcorenlp
win10 64位 python3.6 django1.11 MysqlDB No module named 'MySQLdb' 安装MysqlDB报错 Microsoft Visua