一篇文章学习 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爬虫框架

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

你可能感兴趣的:(一篇文章学习 Python 网络爬虫)