输入关键字 抓取所有网页(windows环境下的操作版本为3urllib库介绍)
优采云 发布时间: 2022-02-22 14:08输入关键字 抓取所有网页(windows环境下的操作版本为3urllib库介绍)
(以下是windows环境下的操作,python版本为3)
1.urllib库介绍
官方文档上的解释是:
urllib 是一个包,它采集了几个用于处理 URL 的模块
简单来说就是用来处理url的,它收录以下模块:
urllib.request 模块定义了有助于在复杂世界中打开 URL(主要是 HTTP)的函数和类——基本和摘要式身份验证、重定向、cookie 等等。
在这里,只需使用 urllib.request 模块。请求模块收录一些处理打开的url的函数。
urlopen()
urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)
这个函数的主要参数是url,可以是字符串,也可以是请求对象。
该函数返回一个可用作文本管理器的对象,方法如下:
要查看这些函数的作用,我们运行以下 python 代码:
import urllib.request
url = "http://www.baidu.com"
a = urllib.request.urlopen(url)
print('----------type of a----------')
print(type(a))
print('----------geturl()----------')
print(a.geturl())
print('----------info()----------')
print(a.info())
print('----------getcode()----------')
print(a.getcode())
运行结果:
3.在百度上抓取关键词的搜索结果
首先我们要知道百度搜索的url,打开百度搜索一个词,地址栏就可以看到url了
拿到url后,剩下的就是爬取url了,代码如下:
# coding=utf-8
# Created by dockerchen
import urllib.request
data = {}
data['word'] = '网络安全'
url_values = urllib.parse.urlencode(data)
url = 'http://www.baidu.com/s?wd='
full_url = url + url_values
data = urllib.request.urlopen(full_url).read()
data = data.decode('utf-8')
print(data)
urllib.parse.urlencode() 可以将字符串转换为url格式的字符串,在转换数据的地方,我们可以得到wd=%E7%BD%91%E7%BB%9C%E5%AE%一个字符串89%E5%85%A8。
如果只想对字符串进行urlencode,可以使用urllib.parse.quote(),例如:
>>> import urllib.parse
>>> urllib.parse.quote('网络安全')
'%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8'
上面代码的输出结果其实就是爬取的百度页面搜索结果的源码。接下来要做的就是对爬取的东西进行处理,得到我们想要的数据
参考:
转载于: