一篇文章学习 Python 网络爬虫

一、爬虫开发基础

爬虫基础分为 Python 基础,网页常识和网页分析三部分。

学习爬虫需要有简单的 Python 基础,主要包括变量、字符串、函数、控制语句等基本知识以及 Python 数据结构(列表、字典、元组等),Python 文件操作和简单的 Python 面向对象。掌握这些就可以进行简单的爬虫开发了。

有了Python 基础之后,还需要了解网页的简单知识。主要为 请求方式、headers、cookies 等网络连接常识。除此之外,了解 HTML、JavaScript、JSON,Ajax 等知识能够更好地进行爬虫开发,不了解也没关系。

掌握上面两部分知识之后,还要学会使用浏览器分析网页。一般使用 Chrome 浏览器,这是业界标配,也确实非常好用。分析网页主要是使用审查工具(F12)进行元素(Elements)的定位和 URL 的捕捉。

二、爬虫基础库——urllib

urllib 是 Python 自带的库,也是访问 URL 的唯一方法,其他的第三方库都是基于它开发的。这个库需要掌握的主要有以下几个方法:

urllib.request.urlopen() 发送请求,read() 获取返回对象,decode() 解码返回对象,urllib.request.Request() 可添加请求头。

其他方法使用的较少,也较为复杂,一般不使用。

三、爬虫三大库之 Requests

Requests 有两个请求方法 get()post() 对应不同请求方式,获取响应对象后,主要用以下方法进行处理:r.raw 原始响应体(r.raw.read()读取),r.content 字节方式的响应体(需要解码,用于下载),r.text字符串方式响应体(自动解码)。r.headeasr.json()r.cookiesr.encodingr.url 等根据字面意思理解。

请求时可能会有复杂的请求方式,如请求头、代理 IP 、证书验证、Cookies 等,Requests 可以直接在请求是添加对应参数即可。头->headers,代理->proxies,证书->verify(=false直接关闭),cookies

下载文件参考下面代码:

import requests
url='http://cc.stream.qqmusic.qq.com/c100001Yyla31Dr60y.ma4?fromtag=52'
r = requests.get(url)
f = open('my.ma4','wb')
f.write(r.content)
f.close()

四、爬虫三大库之 BeautifulSoup

BeautifulSoup 库用于解析 requests 库请求的网页为 Soup 文档,可以便捷提取数据,格式为 soup = BeautifulSoup(res.text,'html.parser'),第二个参数是解析器参数,推荐使用 lxml 解析器。

Soup 文档使用 find()find_all()selector() 定位元素,selector定位可直接在浏览器中复制参数。如果需要获得标签的文本信息,使用get_text()方法。
Soup 文档可以直接使用标签来定位

五、爬虫三大库之 Lxml

导入 Lxml 库的 etree 库,利用 etree.HTML 进行初始化解析为 Element 对象,再利用 xpath 语法即可进行定位。参考代码(代码只有部分,仅做示范):

from lxml import etree
res=requests.get('http://XXXXX')
html = etree.HTML(res.text)
a=html.xpath('//a')

xpath 语法在此不做介绍。
xpath 路径可以在浏览器中直接复制。

六、正则表达式

元字符和语法此处不做详细介绍,它们是正则表达式的精髓,需要详细了解。这里主要介绍 re 模块的方法。

re.match(pattern,string,flags=0)re.search(pattern,string,flags=0) 两者几乎一样,都是返回第一个匹配的对象。第一个参数是正则表达式,第二个参数是匹配字符串,第三个参数为匹配方式。findall()与它们类似,返回所有匹配值。

除了三个匹配方法之外,re 模块其他方法在基础爬虫中较少使用。

七、数据存储

数据爬取之后需要进行存储,主要分为文档和数据库两种。

文档存储主要利用 CSV ,其他的诸如 Word、Excel在特定情况下使用。csv 数据写入读取如下:

import csv #自带
cvsflie = open('csv_test.csv','w',newline='')#newline=''用于取消空行
writer=csv.writer(csvfile)
writer.writerow(('name','url'))
reader=csv.reader(csvfile)
rows = [row for row in reader]
csvfile.close()

存储的 CSV 文件可能会有乱码,可以用记事本打开后再另存为 CSV 文件,保存时使用 UTF -8编码。

Python 爬虫的主流数据库是 MongoDB 和 MySQL,这里不进行仔细的介绍。

八、Selenium模拟浏览器

异步加载技术(Ajax)是许多爬虫的克星,链接分析需要耗费时间。利用selenium 模块可以模拟浏览器来进行爬虫,使用这种方法可以解决大部分的异步加载技术。

这个模块主要就是使用方法寻找元素、模拟浏览器进行操作(点击等)解决异步问题。这里不进行详细介绍,可参考官方文档进行使用。

九、Scrapy爬虫框架

这个框架是爬虫的终极利器,一般爬虫可以不需要它,这里也就不多介绍了。
但是要想真正精通爬虫,这个框架是必须掌握的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,302评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,563评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,433评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,628评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,467评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,354评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,777评论 3 387
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,419评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,725评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,768评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,543评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,387评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,794评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,032评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,305评论 1 252
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,741评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,946评论 2 336

推荐阅读更多精彩内容

  • 目录: Python网络爬虫(一)- 入门基础Python网络爬虫(二)- urllib爬虫案例Python网络爬...
    一只写程序的猿阅读 12,786评论 17 68
  • 声明:本文讲解的实战内容,均仅用于学习交流,请勿用于任何商业用途! 一、前言 强烈建议:请在电脑的陪同下,阅读本文...
    Bruce_Szh阅读 12,654评论 6 28
  • 1.快餐店以及咖啡店的震动响铃叫餐。 优点:对于顾客(不用排队,坐着等餐更为舒适) 对于企业(提高了工作效率,获得...
    程夭衣阅读 305评论 0 0
  • 她在等他,等他代表饥饿的啼哭或是一些细碎的声响,这样她就可以抱起他来,缓解一下乳房些许的胀痛感。但是没有,小家...
    宁先生阅读 274评论 0 0