简介
- 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者):
是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。其实通俗的讲就是通过程序去获取web页面上自己想要的数据,也就是自动抓取数据。 - 爬虫可以做什么?
你可以用爬虫爬图片,爬取视频等等你想要爬取的数据,只要你能通过浏览器访问的数据都可以通过爬虫获取。当你在浏览器中输入地址后,经过DNS服务器找到服务器主机,向服务器发送一个请求,服务器经过解析后发送给用户浏览器结果,包括html,js,css等文件内容,浏览器解析出来最后呈现给用户在浏览器上看到的结果
所以用户看到的浏览器的结果就是由HTML代码构成的,我们爬虫就是为了获取这些内容,通过分析和过滤html代码,从中获取我们想要资源。
页面获取
1) 根据URL获取网页
- URL处理模块(库)
import urllib.request as req
- 创建一个表示远程url的类文件对象
req.urlopen(' ')
- 如同本地文件一样读取内容
import urllib.request as req
# 根据URL获取网页:
# http://www.hnpolice.com/
url = 'http://www.hnpolice.com/'
webpage = req.urlopen(url) # 按照类文件的方式打开网页
# 读取网页的所有数据,并转换为uft-8编码
data = webpage.read().decode('utf-8')
print(data)
2)网页数据存入文件
# 将读取的网页数据写入文件:
outfile = open("enrollnudt.txt", 'w') # 打开文件
outfile.write(data) # 将网页数据写入文件
outfile.close()
此时我们从网页中获取的数据已保存在我们指定的文件里,如下图
网页获取
从图中可以看出,网页的所有数据都存到了本地,但是我们需要的数据大部分都是文字或者数字信息,而代码对我们来说并没有用处。那么我们接下来要做的是清除没用的数据。(在这里我将获取警院新闻中的内容)
3)提取内容
-
分析网页,寻找所需要的内容“警院新闻”
-
内容范围
- <li><a href="show.aspx?id=24797&cid=153" target="_blank"> ...</div>
-
如何将表格中的内容都提取出来?
- 导入re包 (正规表达式包)
import re
re.findall (pattern, string [, flags] )
- 以列表的形式返回string里匹配pattern的不重叠
的子串- string会被从左到右依次扫描,返回的列表也是从左到右
一次匹配到的
- string会被从左到右依次扫描,返回的列表也是从左到右
-
如果pattern里含有组的话,那么会返回匹配到的
组的列表
正规表达式
- 导入re包 (正规表达式包)
-
匹配使用正规表达式
'<li><a href="show.aspx?id=24797&cid=153" target="_blank">(.*?)</div>'
-
数据清洗
- 数据前后清洗
x.strip()
- 数据内部清洗
x.replace(' ', '')
至此,所需的内容已经获取到本地,爬虫基本完成。
网友评论