Python3爬虫系列之urllib库

Python3爬虫之urllib库

基本介绍

最基本的网络请求库。可以模拟浏览器的行为,向指定的服务器发送一个请求,并可以保存服务器返回的数据,在Python3urllib库中,所有和网络请求相关的方法,都被集到urllib.request库上

urlopen函数

  • 示例
resp = request.urlopen('http://www.baidu.com')
print(resp.read())
  • 源码

Python3爬虫系列之urllib库_第1张图片

  • 返回值

http.client.HTTPResponse 对象,故此用response做接收

urlretrieve函数:

  • 用例:
from urllib import request request.urlretrieve('http://www.baidu.com/','baidu1.html')
  • 实现:将目标网页保存到本地

prase模块

编码解码模块

urlencode函数

  • 用例:
from urllib import parse
data = {'name':'爬虫基础','greet':'hello world','age':100}
qs = parse.urlencode(data)
print(qs)
  • 运行结果

name=%E7%88%AC%E8%99%AB%E5%9F%BA%E7%A1%80&greet=hello+world&age=100

—>编码为Unicode格式发送

  • 描述

数据包在网络传输中,不能包含中文和特殊字符,需要进行解码

parse_qs函数:

用例:

from urllib import parse
qs = "name=%E7%88%AC%E8%99%AB%E5%9F%BA%E7%A1%80&greet=hello+world&age=100"
print(parse.parse_qs(qs))

运行结果:

{‘name’: [‘爬虫基础’], ‘greet’: [‘hello world’], ‘age’: [‘100’]}

描述

解码经过编码的url

还有一个对回收数据进行解码的函数decode(),如下

print(resp.read().decode("utf-8"))

如果抓取时以utf-8进行编码传输,用utf-8解码没问题,否之不然,应先了解网页的编码方式,一般通过抓包查取

request.Request类

反反爬必备伪装技术

–>模拟请求头User-Agent,爬虫程序更像个浏览器

from urllib import request

headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36'
}
req = request.Request("http://www.baidu.com/",headers=headers)
resp = request.urlopen(req)
print(resp.read())

ProxyHandler处理器(代理设置)

  • 为何使用:

固定某IP在某段时间内对网站服务器访问过多会被判定为非法访问,从而被限制或直接封掉

  • opener与handler

    如需使用代理ip,则替代urlopen方法,使用如下系列操作方法

  • 用例

handler = request.ProxyHandler({"http":"218.66.161.88:31769"})

opener = request.build_opener(handler)
req = request.Request("http://httpbin.org/ip")
resp = opener.open(req)
print(resp.read())
  • 寻找可用的ip

    西刺代理,快代理,或代理云 + ip检测工具(匹配可用id)

Python系列CSDN博客地址:

如需更系统学习,下面是博主关于Python爬虫的系列学习博客

  1. Python3爬虫入门(快速简易)
  2. Python3爬虫系列之urllib库
  3. Python3爬虫之request库
  4. Python3爬虫之XPath语法和lxml模块
  5. Python3爬虫之数据存储
  6. Python3爬虫之Scrapy框架入门
  7. Python3爬虫入门案例Scrapy爬取传智讲师个人信息
  8. Python3爬虫之Scrapy框架模拟登陆人人网
  9. Python3爬虫之Scrapy框架的下载器中间件
  10. Python3反反爬虫之Scrapy设置随机请求头

你可能感兴趣的:(Python3爬虫系列之urllib库)