写Python爬虫的准备工作

来源:互联网 发布:加拿大 留学 专业 知乎 编辑:程序博客网 时间:2024/06/04 18:52

写Python爬虫的准备工作

学习Python也有一段时间了,前段时间开始搞爬虫,刚开始真是头再铁也撞出血来。不过经过一段时间的摸索,总是是基本入门了,以后的路只能慢慢爬了。今天就来总结下开始爬虫之前,需要做什么准备工作,同时也是作为第一篇博客,激励自己不断学习,不断爬行。

学习爬虫之前,你需要了解:


  • Python基础知识
  • 爬虫基础知识
  • xpath的使用
  • 学会使用爬虫框架
  • Debug的基本技能

Python基础知识

Python 作为一种简洁好用、功能强大的高级语言,在爬虫方面有着不可撼动的地位,所以,在学习爬虫之前你应该对Python有一定的了解。如果你没有学过Python,但是想要快速的开始爬虫,那么花上一两周的时间好好学下Python的基础知识(至少要读懂代码,会写简单的代码吧),也勉强可以支撑你进行爬虫工作。但是不太推荐这种方法,至少也要完整地读过一本Python的教材并且按照教材敲过一遍代码。

爬虫基本知识

爬虫,一种阴暗的生物。有很多的脚,同时能吐丝结网,专门躲在某个偏僻的角落里,吐丝结网吐丝结网,从一个地方爬到另一个地方,就这样悄悄的爬呀爬呀。
爬虫就是两个步骤,一个是爬,一个是提取。爬的意思就是根据一定的网址规则从一个网址爬到另一个网址;提取就是从网址中提取到想要的数据。
Python自带的库里面有两个用于访问网络的包:urllib 和urllib2。不过,这两个库相对效率很低,代码冗余而且爬取速度也慢。所以比较好的做法是使用框架,不仅效率高而且简单易学,毕竟轮子别人都造好了,何必自己再去折腾呢。这一块不打算多说,后面会着重介绍好用的框架,以及如何使用框架,我觉得这个才是快速入门的秘诀。

xpath的使用

xpath 即xml路径语言。用于确定xml文档中某部分的位置。上面我们说到爬虫两个步骤中第二个步骤就是提取,比如说我们爬取豆瓣推理类的书籍,当我们到达页面之后,如何提取内容呢?就需要借助xpath来定位要提取的数据的在网页上的位置,然后才能得到数据。先给一个直观的例子来说明下它的使用:
这里写图片描述
如图,我们在页面上使用工具(Firefox 用firebug,Google Chrome直接按F12),然后我们找到这个书名,这里是“解忧杂货铺”我复制xpath之后,在爬虫代码里面就能根据这个xpath来定位“解忧杂货铺”书名,从而能够将它爬取下来。xpath大概长这样的:/html/body/div[3]/div[1]/div/div[1]/div[1]/dl[1]/dd/a 。是的,就是一个路径。
关于xpath的使用,建议需要好好学习一下,是一个非常强大的提取数据时要用到的工具,等你用到的时候你就知道它是多么好用!

学会使用爬虫框架

使用框架能够更简单地写出优秀的爬虫,避免重复造轮子。
目前常用的框架主要有以下几种:

grab – 网络爬虫框架(基于pycurl/multicur)。scrapy – 网络爬虫框架(基于twisted)pyspider – 一个强大的爬虫系统。cola – 一个分布式爬虫框架。

这里主要介绍scrapy框架。
使用以下命令进行安装:

pip install scrapy

假如安装过程中出现错误,缺少某些库,则单独先安装那些库之后在安装scrapy。假如使用pip安装失败,则下载安装包本地安装。
安装完scrapy之后,使用以下命令新建项目:

scrapy startproject FirstSpider

FirstSpider 为项目名称

之后你会发现目录下有一个文件夹FirstSpider,目录树如下:

FirstSpider    -- FirstSpider        -- spiders            -- __init__.py        -- __init__.py        -- items.py        -- middlewares.py        -- pipelines.py        -- settings.py    -- scrapy.cfg

之后使用编辑器打开整个项目,这里推荐一款编辑 Atom

下面我们来看看怎么使用这个框架。
items.py 定义的是爬取的数据都有什么。例如我们要爬取豆瓣图书,爬取书名,作者,价格等信息,那么就
这里写图片描述

这样的意思就是每个爬取到的图书我们获取这三项。
settings.py 里面主要是做一些配置,比如说设置delay时间等。
pipelines.py 可以设置将数据保存到本地,此处我们保存为book.json。
这里写图片描述

然后我们需要在里面的spiders文件夹新建一个文档FirstSpider.py
这里写图片描述

顾名思义,就是这个爬虫的名字

name = 'FirserSpider'

允许的域名

allow_domains = ['douban.com']

起始链接,可以包含多个

start_urls = ['https://www.douban.com/tag/%E6%8E%A8%E7%90%86/book?start=0','起始链接','起始链接']

rules包含的是所有要爬取链接的规则,这个规则需要自己归纳,例如爬取豆瓣分类为推理的书,我们通过自己看网站上的图书的网址知道,它们的规则就是后面”start=数字”,所以我们在Rule里面的allow 把这个加进去。这样就可以把推理的书都真抓取下来了。

最后在此项目的目录中打开命令行:

scrapy crawl FirstSpider

这里的FirstSpider不是项目名称,而是我们在上面定义的爬虫名字

name = 'FirserSpider'

Debug的基本技能

基本上想要一次性写出正确的代码是不大可能的,我们经常会碰到这样那样的bug,这个时候就需要debug了。所以掌握基本的debug技能是很必要的。这一块就没什么好说的,哪里错了de哪里。

好了,第一篇博客就写这些,后面会开始写实际的爬虫取爬数据,以及这个过程遇到问题并解决问题的过程。
附上我的github: https://github.com/OneTraTown
已经写的几个爬虫回头补上博客。


人生苦短 我用Python

0 0