输入关键字 抓取所有网页(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'

  上面代码的输出结果其实就是爬取的百度页面搜索结果的源码。接下来要做的就是对爬取的东西进行处理,得到我们想要的数据

  参考:

  转载于:

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线