likes
comments
collection
share

快速掌握urllib--入门爬虫

作者站长头像
站长
· 阅读数 19

简单的python爬虫程序

这里博主先带大家 看看一个小爬虫程序 里面涉及的知识文章后面会有介绍

获取响应对象向百度发起请求,获取百度首页的 HTML 代码

import urllib.request
# urlopen()向URL发请求,返回响应对象
response=urllib.request.urlopen('http://www.baidu.com/').read().decode("utf-8")
print(response)

看完这个程序小伙伴们是不是也觉得爬虫挺简单的 ---嘿嘿🤭

下面接着给大家介绍一些urllib的常用知识

urllib常用方法

爬虫库 urllib中的常用方法

  1. urlopen()表示向网站发起请求并获取响应对象

urllib.request.urlopen(url,timeout)

参数说明:

url:表示要爬取数据的 url 地址

这里注意哦 请求的 url 必须带有 http 或者 https 传输协议

timeout:设置等待超时时间,指定时间内未得到响应则抛出超时异常

  1. Request()该方法用于创建请求对象、包装请求头,比如重构 User-Agent(即用户代理,指用户使用的浏览器) 说白了这个重构就是伪装 让浏览器看不出这是爬虫程序在访问而是用户在访问。

urllib.request.Request(url,headers)

参数说明:

url:请求的URL地址。

headers:重构请求头

  1. html响应对象方法

就是使用urlopen后返回的一个对象

返回结果为 bytes 数据类型,一般需要和decode方法一块使用 bytes = response.read()

decode()将字节串转换为 string 类型,这个一般使用还会改一下起的编码格式 string = response.read().decode()

返回响应对象的URL地址 url = response.geturl()

返回请求时的HTTP响应码,一般如果网站请求不对的话 就可以使用这个方法看看检查响应码 code = response.getcode()

  1. 编码解码操作

#字符串转换为字节码 string.encode("utf-8") #字节码转换为字符串 bytes.decode("utf-8")

这个与下面编码,解码是不一样的(一定要仔细的 对比体会再实践一波,大概率我觉得你们要搞混🙃)

Python实现编码与解码

Python 的标准库urllib.parse模块中提供了用来编码和解码的方法,分别是 urlencode() 与 unquote() 。

urlencode() 方法实现了对 url 地址的编码操作

unquote() 方法将编码后的 url 地址进行还原,被称为解码(这个相对使用的较少)

cn.bing.com/search?q=菜鸟 上面这个时博主在 必应 上搜索菜鸟 快速掌握urllib--入门爬虫

cn.bing.com/search?q=麻将 博主再搜一下麻将 快速掌握urllib--入门爬虫

可以看到上面俩个url 只有 q 后面的 关键字不一样 q = 菜鸟 我们通常称这个查询字符 这里 q 表示查询字符串的键,而“菜鸟”则代表您输入的值

下面编写爬虫程序对 “q=菜鸟”进行编码:

from urllib import parse
#构建查询字符串字典
query_string = {'q' : '菜鸟'}
result = parse.urlencode(query_string)
#使用format函数格式化字符串,拼接url地址
url = 'https://cn.bing.com/search?{}'.format(result)
print(url)

编码后的 URL 地址依然可以通过地网页址栏实现搜索功能。

除了使用 urlencode() 方法之外,也可以使用 quote(string) 方法实现编码:

from urllib import parse
#注意url的书写格式,和 urlencode存在不同
url = 'https://cn.bing.com/search?q={}'
word = input('请输入要搜索的内容:')
#quote()只能对字符串进行编码
query_string = parse.quote(word)
print(url.format(query_string))

注意:quote() 只能对字符串编码,而 urlencode() 可以直接对查询字符串字典进行编码。

这里 的编码作用小伙伴们可以先记住 后续文章使用的时候博主还会再做详细的解释