现在的位置: 主页 > 联系方式 > 文章正文

Python+Scrapy爬取数据简单实例

作者:武警河南洛阳红丝带网 来源:www.027fck.com 未知发布时间:2017-09-06 09:39:46
Python+Scrapy爬取数据简单实例

Python爬取数据 Scrapy安装 Scrapy简介及win下安装

Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据

scapy安装+wins

以下所有软件在win下面安装方式相似,且都要对应python版本及win的操作系统位数。有的软件依赖其他软件,所以要先安装依赖。

第一步:安装pywin32(Windows Pywin32允许你像VC一样的形式来使用PYTHON开发win32应用),从 下载对应python版本与操作系统位数的pywin32.双击安装即可(exe安装方式)

第二步:安装twisted前,先安装它的依赖。Zope.Interface :https://pypi.python.org/pypi/zope.interface 安装方式如上。安装pyopenssl:https://pypi.python.org/simple/pyopenssl/
最后安装
第三步:安装lxml:https://pypi.python.org/pypi/lxml/3.4.0
第四步:安装 setuptools:https://pypi.python.org/pypi/setuptools/0.6c11 .若直接双击安装不了,另附安装方法[1]有相关安装方法。
第五步:需要将python安装目录下的Scripts目录路径添加到系统变量中。
最后,安装scrapy:地址自行搜索,通过setup.py install安装。附全部软件.

链接: 密码:a5ol

验证环境
后台运行:scrapy若没报错就说明装成功了。

Linux下安装

环境: ubuntu15.04 python2.7
第一步: pip install -U scrapy
问题: error: command ‘x86_64-linux-gnu-gcc’ failed with exit status 1

[搭建一个简单的scrapy项目][3]

基本上我们是根据自己的需求基于scrapy基本框架进行定制化爬取。

新建一个python+scrapy项目

在你想新建项目的地方,执行命令:

scrapy startproject tutorial

该命令自动构建一个基本的scrapy项目。目录如下:

这里写图片描述

解释:

scrapy.cfg: 项目的配置文件 tutorial/items.py: 项目中的item文件. tutorial/pipelines.py: 项目中的pipelines文件. tutorial/settings.py: 项目的设置文件.

tutorial/spiders/: 放置spider代码的目录.

定义Item

Item 是保存爬取到的数据的容器;其使用方法和python字典类似, 并且提供了额外保护机制来避免拼写错误导致的未定义字段错误。

具体做法:以dmoz.org为例
- 创建一个scrapy.Item类。并定义scrapy.Field的类属性。根据dmoz.org对item建模,获取其名称,链接及网站描述。在tutorial/items.py进行编辑(后面很多方法基于item进行),在原本的class后面添加我们自己的class

class DmozItem(Item): title = Field() link = Field() desc = Field()

####制作爬虫Spider

Spider是用户自己编写的类,用来从一个域(或域组)中抓取信息。

先爬后取:先获取整个网页内容,再提取对你有用的
1. 定义了用于下载的URL列表、跟踪链接的方案、解析网页内容的方式,以此来提取items。
2. 建立一个Spider,你必须scrapy.spider.BaseSpider创建一个子类,并确定三个强制的属性:

name:爬虫的识别名称,必须是唯一的,在不同的爬虫中你必须定义不同的名字。 start_urls:爬取的URL列表。爬虫从这里开始抓取数据,所以,第一次下载的数据将会从这些urls开始。其他子URL将会从这些起始URL中继承性生成。

parse():解析的方法,调用的时候传入从每一个URL传回的Response对象作为唯一参数,负责解析并匹配抓取的数据(解析为item),跟踪更多的URL。

编写第一只爬虫,命名为dmoz_spider.py,保存在tutorial\spiders目录下: from scrapy.spider import Spider class DomzSpider(Spider): name = 'dmoz' allowed_domains = ["dmoz.org"] start_urls = [ "", "" ] def parse(self,response): fileName = response.url.split('/')[-2] open(fileName,'wb').write(response.body)

部分解释:
allow_domains:爬虫的约束区域,此处规定爬虫只爬取这个域名下的网页。
parse函数:将链接的最后两个地址取出作为文件名进行存储。

在tutotial目录下打开后台,执行命令:scrapy crawl dmoz
结果如下:

这里写图片描述

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:黄石SEO http://huangshi.raoyu.net

上一篇:wordpress二次开发:站外以HTML的形式调用wordpress文 下一篇:最后一页