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