一、爬虫
万维网(WWW)的快速发展带来了大量获取和提交网络信息的需求,这产生了“网络爬虫”等一系列应用。Python 语言提供了很多类似的函数库,包括urllib、urllib2、urllib3、wget、scrapy、requests 等。这些库作用不同、使用方式不同、用户体验不同。对于爬取回来的网页内容,可以通过re(正则表达式)、beautifulsoup4等函数库来处理。
网络爬虫应用一般分为两个步骤:(1)通过网络连接获取网页内容(2)对获得的网页内容进行处理。本节课主要学习对应这两个步骤的urllib.request和re(正则表达式)、beautifulsoup4框架。
二、urllib.requset库的使用
urllib.request 模块提供了最基本的构造 HTTP 请求的方法,利用它可以模拟浏览器的一个请求发起过程,同时它还带有处理 authenticaton (授权验证), redirections (重定向), cookies (浏览器Cookies)以及其它内容。
import urllib.request
response = urllib.request.urlopen(“https://www.baidu.com”)
print(response.read().decode(“utf-8”))
三、正则表达式
正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。正则表达式是繁琐的,但它是强大的,学会之后的应用会让你除了提高效率外,会给你带来绝对的成就感。
具体详情介绍:https://www.runoob.com/regexp/regexp-intro.html。
^ 为匹配输入字符串的开始位置。
[0-9]+匹配多个数字, [0-9] 匹配单个数字,+ 匹配一个或者多个。
abc
匹
配
字
母
a
b
c
并
以
a
b
c
结
尾
,
匹配字母 abc 并以 abc 结尾,
匹配字母abc并以abc结尾, 为匹配输入字符串的结束位置。
右键查看源代码、审查元素(F12)
在线正则表达式测试:https://tool.oschina.net/regex/#。
正则表达式 r = r” “
四、beautifulsoup4 库
HTML 建立的Web 页面一般非常复杂,除了有用的内容信息外,还包括大量用于页面格式的元素,直接解析一个Web 网页需要深入了解HTML 语法,而且比较复杂。beautifulsoup4 库将专业的Web 页面格式解析部分封装成函数,提供了若干有用且便捷的处理函数。
创建的BeautifulSoup 对象是一个树形结构,它包含HTML 页面里的每一个Tag(标签)元素,如、等。具体来说,HTML 中的主要结构都变成了BeautifulSoup 对象的一个属性,可以直接用.形式获得,其中的名字采用HTML 中标签的名字。
安装第三方库:
豆瓣:https://pypi.douban.com/simple
阿里云:https://mirrors.aliyun.com/pypi/simple
清华大学:https://pypi.tuna.tsinghua.edu.cn/simple
中国科技大学:https://pypi.mirrors.ustc.edu.cn/simple
语法结构:pip install -i https://pypi.douban.com/simple beautifulsoup4
五、简单网站数据爬取
网址链接:https://www.i4.cn/wper_1_0_0_1.html
print("正则表达爬取数据")
import urllib.request
import re
name=1
html=urllib.request.urlopen("https://www.i4.cn/wper_23_0_0_1.html")
data=html.read()
r=r"[a-zA-z]+://[^\s]*.jpg"
pat=re.compile(r)
imgs=re.findall(pat,str(data))
del imgs[-5:]
for i in imgs:
urllib.request.urlretrieve(i,"img/%s.jpg"%name)
print("完成第%s张壁纸下载" % name)
name+=1