关于爬虫的了解,始于看到这篇分析从数据角度解析福州美食,和上份工作中的短暂参与。

长长短短持续近一年的时间,对其态度越来越明晰,噢原来这就是我想从事的工作。

于是想要系统学习的心理便弥散开来……

参考书籍:《利用python写网络爬虫

爬虫简介

  互联网包含了迄今为止最多的数据集,我想这句话没有问题。它们以嵌入的方式呈现在网站的结构和样式当中,供我们公开访问大部分时候。但是这些数据又难以复用,所以必须得抽取出来使用,从网页中抽取数据的过程便称为网络爬虫。

爬虫调研

  首先,我们得认识到爬取一个网站的数据时,自己是一个访客,应当约束自己的抓取行为,限速和数据商用等。其次,在深入爬取之前,我们需要对目标网站的规模和结构进行一定了解。

1.检查robot.txt

这个文件定义了爬取网站存在的限制,良好的网络公民都应该遵守这些限制,这也是避免爬虫被封禁的有效途径之一

    

 #section1
User-agent: *
Disallow: /subject_search
Disallow: /amazon_search
Disallow: /search
Disallow: /group/search
Disallow: /event/search
Disallow: /celebrities/search
Disallow: /location/drama/search
Disallow: /forum/
Disallow: /new_subject
Disallow: /service/iframe
Disallow: /j/
Disallow: /link2/
Disallow: /recommend/
Disallow: /trailer/
Disallow: /doubanapp/card
Sitemap: https://www.douban.com/sitemap_index.xml
Sitemap: https://www.douban.com/sitemap_updated_index.xml
# Crawl-delay: 5 #section2
User-agent: Wandoujia Spider
Disallow: /

以上是豆瓣网站的robot.txt文件的内容,section1规定,不论哪种用户代理,两次下载请求之间应延迟5秒抓取,避免服务器过载;还列出了一些不允许爬取的链接,以及定义了sitemap文件。section2规定,禁止用户代理为Wandoujia的爬虫爬取该网站

2.检查网站地图

网站提供的Sitemap文件,即网站地图,可以帮助爬虫定位网站最新的内容,避免爬取每一个网页,该文件比较大,都采取压缩的方式展示。

3.识别网站所用技术

构建网站的技术会影响如何爬取,python的builtwith库可以帮助了解这一点。

 >>> import builtwith
>>> builtwith.parse("https://www.douban.com")
{u'javascript-frameworks': [u'jQuery'], u'tag-managers': [u'Google Tag Manager'], u'analytics': [u'Piwik']}

4.估算网站大小

目标网站的大小会影响我们爬取的方式,比较小的网站,效率就没有那么重要,而上百千万级别的网页站点,则需要考虑分布式下载方式,不然串行下载,可能需要持续好久才能完成。

爬虫准备

1.清楚爬取的目的。爬取的过程大致分为:

1)爬取:下载网页(requests,urllib,urllib2),解析网页(re,lxml,BeautifulSoup,选其一)

2)存储:MongoDB,文件

3)分析:Pandas

4)展示:Matplotlib , Pyechart

2.爬虫需要熟悉或安装的第三方库

1)请求和响应:requests,urllib,urllib2

注:在python2.7语法里,urllib和urllib2是两个不同的内置模块,python3合二为一了。两者的区别在于urllib2可接收一个Request对象,并以此可以设置一个headers,但urllib只能接收url;urllib可提供进行urlencode方法,urllib2不具有

2)提取数据:re,lxml,BeauitifulSoup

3)数据格式:json,xml

4)数据库连接:pymongo

5)爬虫框架:Scrapy

6)数据分析展示:pandas,matplotlib,pyechart

3.爬虫工具准备

1)python2.7:自带IDEL编辑器,使用pip包管理工具,安装第三方库。

常见命令有:pip list    #查看所有已安装的

      pip install 第三方库名  #安装

      pip uninstall 第三方库名  #卸载

      pip install --upgrade 第三方库名  #升级

aaarticlea/png;base64,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cENbhMlwWmWhJpbLEcNbX6dods2uac973ZT355kWJueX6EbCZCYfJru5BtFysNHt8Ftour6fHiZzyayyfevSnJV7dtB3XEw+/NEqX/DytmkhOpPirZcEAICb2agyeT7DofDv++zeO+FKwL7dR/kiWSc4PBgjXByYHiGRLjKcuu/L683HDoKXGyTmcrenq327L5wueYzN3aCL9NCStNxYWC5Z+a5mGhzekrxSpjY49qzlbQcvlamYipIAAHBD209zzdq3rfmID+IRYlo28gIAAFd02TB5nJqZLOnjrt15Vku3BQYAAK5tVZgM5iHm/3V/vOGekwkAAACzrQqTfvz48ePHjx8/fvz48ePHz6yf3d/++//b937/n/yt3/vH3/3BH333+3/43e//+NvdZx9//4vf+b0/+p3f+6OPv//Fb3U/+q3uRx9/+vnvfP/HH3/vs+988qPvfPKjj7vPPv7eZ7/96eff/fSLj7/3xcff++K3P/3x4efj733xcff5x93nv/m7//Dbn3z2W9/7/ONPf/zx93/88ac//q3vff7t7rNvf/LZtz/57NvdZ9/59IvD5x9//8e//YM//M6nn3386ecff/+Lj7//xW//4Mff/duvP7/z/R//ze9/8Tc/Hf+/v/PpF9/99Iu/+bf/8Ld/8OOPP/087PDjTz8//Hzn089OP4dPfvsHf/jxpz/+zqdf/Nb3Pv/Op18c/vs0tsPnh0uvV7//+W99//P0/377e59/+9PPv/29z7/1vc++9clnv/HJj37zkx/9xu/+w293n327++xbnxx+Pv/WJ5//5ief/eYnn3370x//Zvf5b3zy2W988tlvfPLF68/vfv4/fPezv/Y3/u5f//Y/+O//+vf/27/8N/67/7+J8n9LItvj+HPvD/f27HO/tNutXRQYGHB0YAQRIVEwCqXUzMr2WpZtbpiKRaImysDoIAMDwxdFUXCGOTBILn5Js9XqrtXeyz92f7Bt93leP7w+55wfznM+7/MZJkcm4s7p5fsOcnAk4HBFXJ6UG19z42tTRMYTYH2hPE7lZgOsh8x6yKyH3PBSLB7i/DTw0TxOsz6a80dy/kjOR3M4zeLhHB4GXio3vZCdwNOuudQEnp70Zyb9mWkiO0OynkVuNsjiId5P54lo3hfJ4zTvDXPeMIfTOZzOecPcXIidpdi5EPvH9dMtH5P3MXk8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" alt="" />

2)Anaconda2:可以看做时Python的一个集成安装,安装它后就默认安装了python、IPython、集成开发环境Spyder和众多的包和模块。非常方便,注意是非常方便。使用conda包管理工具,安装第三方库。常用命令和pip类似

aaarticlea/png;base64,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" alt="" />

Anaconda 内置包更新 eg:conda update pandas

或者源码安装:

进入包路径,输入 python setup.py install

注:人生苦短,使用Anaconda。自带numpy,pandas,matplotlib第三方库,用来数据分析,不用考虑各个库之间的依赖关系非常赞。

爬虫初识

通常为了抓取网站感兴趣的内容,首先需要下载包含该数据的网页,这过程一般称为爬取(crawling)。

import requests
import urllib2 def download1(url):
"简单下载"
print 'downloaing1:',url
html = requests.get(url).content
return html def download2(url):
"新增捕获错误的下载"
print 'downloaing2:',url
try:
html = requests.get(url).content
except urllib2.URLError as e:
print 'downing error',e.reason
html = None
return html def download3(url,num_reties = 3):
"新增重试次数的下载"
print 'downloading3:',url
try:
html = requests.get(url).content
except urllib2.URLError as e:
print 'downing error',e.reason
html = None
if num_reties > 0:
if hasattr(e,'code') and 500 <= e <= 600:
html = download3(url,num_reties -1)
return html def download4(url,num_reties = 3):
"新增请求头的下载"
print 'downloading4:',url
try:
headers = {'User-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36'}
html = requests.get(url,headers = headers).content
except urllib2.URLError as e:
print 'downing error',e.reason
html = None
if num_reties > 0:
if hasattr(e,'code') and 500 <= e <= 600:
html = download3(url,num_reties -1)
return html def download5(url,num_reties = 3):
"新增代理的下载"
print 'downloading5:',url
try:
headers = {'User-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36'}
proxy = {"http": "dev-proxy.oa.com:8080","https": "dev-proxy.oa.com:8080"}
html = requests.get(url,headers = headers,proxies = proxy).content
except urllib2.URLError as e:
print 'downing error',e.reason
html = None
if num_reties > 0:
if hasattr(e,'code') and 500 <= e <= 600:
html = download3(url,num_reties -1)
return html #download = download1
#download = download2
#download = download3
#download = download4
download = download5 if __name__ == '__main__':
print download('http://so.gushiwen.org/type.aspx')

注:download = download5 会报ProxyError的错,因为代理ip是随便写的

从每个网页中抽取一些数据的过程叫抓取(scraping),根据网页结构特点(html/js/ajax),我们一般会用正则表达式、Beautiful Soup和lxml这三种方法抓取数据。

1.正则表达式,详情参见

import re

s = """
<div id="contson52821" class="contson">
<p>
寻寻觅觅,冷冷清清,凄凄惨惨戚戚。乍暖还寒时候,最难将息。三杯两盏淡酒,怎敌他、晚来风急?雁过也,正伤心,却是旧时相识。
<br>
满地黄花堆积。憔悴损,如今有谁堪摘?守着窗儿,独自怎生得黑?梧桐更兼细雨,到黄昏、点点滴滴。这次第,怎一个愁字了得!(守着窗儿 一作:守著窗儿)
</p>
</div>
"""
SFiltered = re.sub(r'\<.*?\>'," ",s).strip()
print SFiltered

2.Beautiful Soup

from bs4 import BeautifulSoup

s = """
<div id="contson52821" class="contson">
<p>
寻寻觅觅,冷冷清清,凄凄惨惨戚戚。乍暖还寒时候,最难将息。三杯两盏淡酒,怎敌他、晚来风急?雁过也,正伤心,却是旧时相识。
<br>
满地黄花堆积。憔悴损,如今有谁堪摘?守着窗儿,独自怎生得黑?梧桐更兼细雨,到黄昏、点点滴滴。这次第,怎一个愁字了得!(守着窗儿 一作:守著窗儿)
</p>
</div>
"""
soup = BeautifulSoup(s,'lxml')
#soup.find_all('p')
for i in soup.find_all('p'):
print i.text

3.lxml,详情参见

from lxml import etree

s = """
<div id="contson52821" class="contson">
<p>
寻寻觅觅,冷冷清清,凄凄惨惨戚戚。乍暖还寒时候,最难将息。三杯两盏淡酒,怎敌他、晚来风急?雁过也,正伤心,却是旧时相识。
<br>
满地黄花堆积。憔悴损,如今有谁堪摘?守着窗儿,独自怎生得黑?梧桐更兼细雨,到黄昏、点点滴滴。这次第,怎一个愁字了得!(守着窗儿 一作:守著窗儿)
</p>
</div>
"""
selector = etree.HTML(s)
s1 = selector.xpath('//*[@id="contson52821"]/p/text()')
#print s1
for i in s1:
print i

输出:三者都一样

三种抓取方法比较

抓取方法 性能 使用难度
正则表达式 快,C编写
Beautiful Soup 慢,Python编写 简单
lxml 快,C编写 相对简单

总结:如果爬虫瓶颈不是抓取数据,使用较慢的方法也不是问题,如果只抓取少量数据避免额外包依赖,也许使用正则表达式更方便,通常情况下,lxml抓取比较好,正则和Beautiful Soup 在特定场景下使用。

爬虫优化

1.下载限速:Throttle类记录了每个域名上次访问的时间,如果当前时间距离上次访问时间小于指定延迟,则执行睡眠操作。

class Throttle:
def __init__(self, delay):
self.delay = delay
self.domains = {} #记录一个域名最后一次访问的时间戳 def wait(self, url):
domain = urlparse.urlparse(url).netloc
last_accessed = self.domains.get(domain) if self.delay > 0 and last_accessed is not None:
sleep_secs = self.delay - (datetime.now() - last_accessed).seconds
if sleep_secs > 0:
time.sleep(sleep_secs)
self.domains[domain] = datetime.now() #更新最后一次访问的时间戳

2.多次抓取,添加缓存机制

class MongoCache:
def __init__(self,client = None,expires = timedelta(days = 30)):
self client = MongoClient('localhost',27017) #连接默认端口
if client is None else client
self.db =client.cache
self.db.webpage.create_index('timestamp',expiresAfterSecond = expires.total_seconds()) #创建过期缓存页面索引 def __getitem__(self,url):
record = self.db.webpage.find_one({'_id':url})
if record:
return record['result']
else:
raise KeyError(url + 'does not exist') def __setitem__(self,url,result):
record = {'result':result,'timestamp':datatime.utcnow()}
self.db.webpage.updata({'_id':url,{'$set',record},upsert = True})

说明:getitem和setitem为python的魔法方法,更多参见

3.并发下载多进程

import requests
from multiprocessing import Pool
import time urllist = ['http://so.gushiwen.org/type.aspx?p={}&c=%e5%94%90%e4%bb%a3'.format(i) for i in range(1,501)]
def download(url):
for url in urllist:
print url
html = requests.get(url).content
return html if __name__ == "__main__":
#创建多个进程,并行执行
T1 = time.time()
pool = Pool(processes = 5)
new_lst = pool.map(download,urlist)
pool.close() #关闭进程池,不再接受新的进程
pool.join() #主进程阻塞等待子进程的退出
T2 = time.time()
print u'并行执行时间:',int(T2-T1)

更多爬虫实例参见如下:

爬虫实例(一):每日一文爬虫

爬虫实例(二):唐诗宋词爬虫

爬虫实例(三):中国日报爬虫

爬虫实例(四):天猫商品评论爬虫

爬虫实例(五):豆瓣电影爬虫

爬虫实例(六):今日头条爬虫

爬虫实例(七):饿了么爬虫

关于爬虫框架Scrapy,参见

python爬虫系列序的更多相关文章

  1. python 爬虫系列教程方法总结及推荐

    爬虫,是我学习的比较多的,也是比较了解的.打算写一个系列教程,网上搜罗一下,感觉别人写的已经很好了,我没必要重复造轮子了. 爬虫不过就是访问一个页面然后用一些匹配方式把自己需要的东西摘出来. 而访问页 ...

  2. $python爬虫系列(2)—— requests和BeautifulSoup库的基本用法

    本文主要介绍python爬虫的两大利器:requests和BeautifulSoup库的基本用法. 1. 安装requests和BeautifulSoup库 可以通过3种方式安装: easy_inst ...

  3. Python爬虫系列 - 初探:爬取旅游评论

    Python爬虫目前是基于requests包,下面是该包的文档,查一些资料还是比较方便. http://docs.python-requests.org/en/master/ POST发送内容格式 爬 ...

  4. python爬虫系列(2)—— requests和BeautifulSoup

    本文主要介绍python爬虫的两大利器:requests和BeautifulSoup库的基本用法. 1. 安装requests和BeautifulSoup库 可以通过3种方式安装: easy_inst ...

  5. Python爬虫系列(七):提高解析效率

    如果仅仅因为想要查找文档中的<a>标签而将整片文档进行解析,实在是浪费内存和时间.最快的方法是从一开始就把<a>标签以外的东西都忽略掉. SoupStrainer 类可以定义文 ...

  6. 【数量技术宅 | Python爬虫系列分享】实时监控股市重大公告的Python爬虫

    实时监控股市重大公告的Python爬虫小技巧 精力有限的我们,如何更加有效率地监控信息? 很多时候特别是交易时,我们需要想办法监控一些信息,比如股市的公告.如果现有的软件没有办法实现我们的需求,那么就 ...

  7. Python爬虫系列(三):requests高级耍法

    昨天,我们更多的讨论了request的基础API,让我们对它有了基础的认知.学会上一课程,我们已经能写点基本的爬虫了.但是还不够,因为,很多站点是需要登录的,在站点的各个请求之间,是需要保持回话状态的 ...

  8. Python爬虫系列(一):从零开始,安装环境

    在上一个系列,我们学会使用rabbitmq.本来接着是把公司的celery分享出来,但是定睛一看,celery4.0已经不再支持Windows.公司也逐步放弃了服役多年的celery项目.恰好,公司找 ...

  9. Python爬虫系列之爬取美团美食板块商家数据(一)

    主要思路 目的: 根据输入的城市名,爬取该城市美团美食板块所有商家的数据.数据包括: 店名.评分.评论数量.均价.地址, 并将这些数据存入Excel中. 最后尝试对爬取到的数据做一个简单的分析. 克服 ...

随机推荐

  1. 【TYVJ1936】【Clover杯NOIP模拟赛IV】太空战队

    [问题描述] 在社会经济高速发展的今天,借助高科技手段,组建太空战队的愿望就快实现了. 战队属下有N个航天员.作为空军选拔上来的佼佼者,每个航天员都有与生俱来的骄傲——他们每个人都认为自己是最强的或者 ...

  2. kubernetes系列

    目录: 介绍的全部可以在github上找到,链接  haoprogrammer kubernetes学习:(一).kubeadm搭建kubernetes(v1.13.1)单节点集群 kubernete ...

  3. Android 低功耗蓝牙的多设备连接与数据接收,简单实现

    在网络层,互联网提供所有应用程序都要使用的两种类型的服务,尽管目前理解这些服务的细节并不重要,但在所有TCP/IP概述中,都不能忽略他们: 无连接分组交付服务(Connectionless Packe ...

  4. Linux下打包、压缩和解压

    命令使用:tar  主选项+辅选项  压缩后文件名  要压缩的文件 -c 建立压缩文件(常用) -x 解压(常用) -t 查看压缩文件(常用) -r 向压缩文件末尾追加文件 -u 更新一个压缩包中的文 ...

  5. JAVA基本数据类型转换的注意事项

    JAVA中基本数据类型: 类型: 字节: 范围: 默认值: byte 1 -128~127 0 short 2 -32768~32767 0 char 2 0~65535 '\u0000' int 4 ...

  6. hdu4081 Qin Shi Huang's National Road System 次小生成树

    先发发牢骚:图论500题上说这题是最小生成树+DFS,网上搜题解也有人这么做.但是其实就是次小生成树.次小生成树完全当模版题.其中有一个小细节没注意,导致我几个小时一直在找错.有了模版要会用模版,然后 ...

  7. 一系列令人敬畏的.NET核心库,工具,框架和软件

    内容 一般 框架,库和工具 API 应用框架 应用模板 身份验证和授权 Blockchain 博特 构建自动化 捆绑和缩小 高速缓存 CMS 代码分析和指标 压缩 编译器,管道工和语言 加密 数据库 ...

  8. python数据分析------文本挖掘(jieba)

    1.import jieba jieba的cut函数有三个模式:全模式.精准模式.搜索引擎模式 1 精确模式,试图将句子最精确地切开,适合文本分析: 2 全模式,把句子中所有的可以成词的词语都扫描出来 ...

  9. 计蒜客 第 m 大的身份证号码 (水)

    链接 : Here! 思路 : 水题 代码 : #include <cstdio> #include <string> #include <iostream> #i ...

  10. win主机ping不通linux的IP

    1.虚拟机的中的linux系统设置成桥接模式 2.点击虚拟机的编辑选择虚拟网络编辑器 3.点击更改设置 4点击还原默认设置即可