Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 其能够应用在数据挖掘,信息处理或存储历史数据等一系列的程序中。其最初是为了页面抓取 (更确切来讲, 网络抓取 )所设计的, 也能够应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫。Scrapy用途普遍,能够用于数据挖掘、监测和自动化测试。html
Scrapy 使用了 Twisted异步网络库来处理网络通信。总体架构大体以下python
Scrapy主要包括了如下组件:windows
Scrapy运行流程大概以下:网络
1、安装架构
一、安装wheel pip install wheel 二、安装lxml https://pypi.python.org/pypi/lxml/4.1.0 三、安装pyopenssl https://pypi.python.org/pypi/pyOpenSSL/17.5.0 四、安装Twisted https://www.lfd.uci.edu/~gohlke/pythonlibs/ 五、安装pywin32 https://sourceforge.net/projects/pywin32/files/ 六、安装scrapy pip install scrapy
注:windows平台须要依赖pywin32,请根据本身系统32/64位选择下载安装,https://sourceforge.net/projects/pywin32/并发
2、爬虫举例框架
入门篇:美剧天堂前100最新(http://www.meijutt.com/new100.html)dom
一、建立工程异步
1
|
scrapy startproject movie
|
二、建立爬虫程序scrapy
1
2
|
cd movie
scrapy genspider meiju meijutt.com
|
三、自动建立目录及文件
四、文件说明:
注意:通常建立爬虫文件时,以网站域名命名
五、设置数据存储模板
items.py
1
2
3
4
5
6
7
8
|
import scrapy
class
MovieItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
name = scrapy.Field()
|
六、编写爬虫
meiju.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
# -*- 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
|
七、设置配置文件
settings.py增长以下内容
1
|
ITEM_PIPELINES = {
'movie.pipelines.MoviePipeline'
:100}
|
八、编写数据处理脚本
pipelines.py
1
2
3
4
|
class
MoviePipeline(
object
):
def process_item(self, item, spider):
with open(
"my_meiju.txt"
,
'a'
)
as
fp:
fp.write(item[
'name'
].encode(
"utf8"
) +
'\n'
)
|
九、执行爬虫
1
2
|
cd movie
scrapy crawl meiju --nolog
|
十、结果