写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
- 写Python爬虫的准备工作
- python爬虫入门教程(一):开始爬虫前的准备工作
- 爬虫的准备工作
- python爬虫实践(一):准备工作
- python 3.5 写的爬虫
- python写的网页爬虫-scrapy
- 用python写爬虫的一些技巧
- Python写的deviantArt小爬虫
- 使用python写糗事百科的爬虫
- 用python写爬虫的一些技巧
- Python写的一个爬虫程序
- 用python写的多线程网页爬虫
- Python写的网络刷博器爬虫
- 【详解】Python写爬虫脚本的教程
- Python写的网络爬虫程序
- python写爬虫6-selenium的使用
- 用python写的一次爬虫经历
- 用Python写一个简单的爬虫
- HDU4920:Matrix multiplication(思维 & bitset)
- iOS GCD之dispatch_semaphore(信号量)
- poj 2251 Dungeon Master
- jsoncpp封装和解析字符串、数字、布尔值和数组
- 注解(Annotation)自定义注解入门
- 写Python爬虫的准备工作
- ASP.NET 判断是否是连续的数字(可重复,但必须是连续的数字)
- android 实现图标 (图片)拖拽移动
- mook 离港篇之 引用 与 const
- 自动无限轮播图,支持多种自定义效果
- 冒泡排序
- git命令
- 使用ngrok暴露端口到外网,并且提供域名访问应用
- 为spring-boot-admin配置spring security(用于控制访问)