Python爬取数据
- Scrapy安装
Scrapy简介及win下安装
Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据 ——百度百科
scapy安装+wins
以下所有软件在win下面安装方式相似,且都要对应python版本及win的操作系统位数。有的软件依赖其他软件,所以要先安装依赖。
第一步:安装pywin32(Windows Pywin32允许你像VC一样的形式来使用PYTHON开发win32应用),从http://sourceforge.net/projects/pywin32/files/ 下载对应python版本与操作系统位数的pywin32.双击安装即可(exe安装方式)
第二步:安装twisted前,先安装它的依赖。Zope.Interface :https://pypi.python.org/pypi/zope.interface#downloads 安装方式如上。安装pyopenssl:https://pypi.python.org/simple/pyopenssl/
最后安装http://twistedmatrix.com/Releases/Twisted/14.0/
第三步:安装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安装。附全部软件.
链接:http://pan.baidu.com/s/1i5Q8TId 密码: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 = [
"http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",
"http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"
]
def parse(self,response):
fileName = response.url.split('/')[-2]
open(fileName,'wb').write(response.body)
部分解释:
allow_domains:爬虫的约束区域,此处规定爬虫只爬取这个域名下的网页。
parse函数:将链接的最后两个地址取出作为文件名进行存储。
- 在tutotial目录下打开后台,执行命令:scrapy crawl dmoz
结果如下:
错误;
引用了以下大神的文章:
[1]http://blog.csdn.net/playstudy/article/details/17296473
[2]http://f.dataguru.cn/thread-36396-1-1.html
[3]http://scrapy-chs.readthedocs.io/zh_CN/latest/intro/tutorial.html#item
来源:CSDN
作者:huiqin08
链接:https://blog.csdn.net/weixin_36001351/article/details/52565597