打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Python网络爬虫(三)——网络蜘蛛是如何模拟人的行为?

一、定义

模拟人的行为去访问站点,或带回一些与站点相关的信息

二、组成

1.模拟请求

2.数据解析

3.数据保存

三、模拟请求

4.HTTP请求

(1)实例

urllib.request.urlopen('http://www.baidu.com')

(2)urllib 库

Python 内置的一个 HTTP 请求库

① 组成

1)request 模块

打开和浏览 URL 中的内容

2)error 模块

包含 urllib.request 发生的错误或异常

3)parse 模块

解析 URL

4)robotparser 模块

解析 robots.txt 文件

5.HTTPS请求

url = 'https://www.baidu.com/img/test.png'resp = urllib.request.urlopen(url)pic = resp.read()with open('local_test.png', 'wb') as f:f.write(pic)

(2)解决SSL证书验证

① 方法一

全局取消证书验证

ssl._create_default_https_context = ssl._create_unverified_context

② 方法二

使用ssl创建未经验证的上下文,在urlopen()中传入上下文参数

context = ssl._create_unverified_context()resp=urllib.request.urlopen(url,context=context)

③ 方法三

调用
urllib.request.urlretrieve()函数直接进行下载

urllib.request.urlretrieve(url, 'local_test.png')

6.GET请求

urllib.request.Request(get_url)

(2)urllib.parse 模块的urlencode 函数

将字典形式的数据转换为查询字符串

(3)urllib.parse 模块的parse_qs 函数

把 GET 请求后跟着的查询字符串反序列化为字典

(4)urllib.parse 模块的parse_qsl 函数

把 GET 请求后跟着的查询字符串反序列化为列表

7.POST请求

urllib.request.Request(post_url,data)

(2)规避反爬虫操作

① 请求头验证

1)方法一

把请求头都塞到字典里,在实例化 Request 对象的时候传入

urllib.request.Request(header_url, headers=headers)

2)方法二

通过 Request 对象的 add_header()方法一个个添加

② 避免 IP 被封

1)延迟提交数据

延迟每次发起请求的时间,用 time 模块的 sleep(秒)函数休眠

③ 限制IP 访问频率

1)设置代理

轮换代理 IP 去访问目标网站

a.步骤

a)创建代理处理器

proxy_support = urllib.request.ProxyHandler({'http':'21.141.13.43:80'})

b)定制,创建一个opener

opener = urllib.request.build_opener(proxy_support)

c)安装opener

urllib.request.install_opener(opener)

④ Cookie认证

1)获取Cookie

a.实例化CookieJar对象

cookie = cookiejar.CookieJar()

b.创建Cookie处理器

handler = urllib.request.HTTPCookieProcessor(cookie)

c.通过CookieHandler创建opener

opener = urllib.request.build_opener(handler)

d.打开网页

resp = opener.open('http://www.baidu.com')

e.获得Cookie

cookie

2)保存Cookie到文件

a.用于保存Cookie的文件

cookie_file = 'cookie.txt'

b.创建MozillaCookieJar对象保存Cookie

cookie = cookiejar.MozillaCookieJar(cookie_file)

c.创建Cookie处理器

handler = urllib.request.HTTPCookieProcessor(cookie)

d.通过CookieHandler创建opener

opener = urllib.request.build_opener(handler)

e.打开网页

resp = opener.open('http://www.baidu.com')

f.保存Cookie到文件中

cookie.save(ignore_discard=True, ignore_expires=True)

3)读取Cookie文件

a.创建MozillaCookieJar对象保存Cookie

cookie = cookiejar.MozillaCookieJar(cookie_file)

b.从文件中读取Cookie内容

cookie.load(cookie_file, ignore_expires=True, ignore_discard=True)

c.创建Cookie处理器

handler = urllib.request.HTTPCookieProcessor(cookie)

d.通过CookieHandler创建opener

opener = urllib.request.build_opener(handler)

e.打开网页

resp = opener.open('http://www.baidu.com')

(3)拆分URL

① urllib.parse 模块的urlparse 函数

将 URL 拆分成六大组件

② urllib.parse 模块的urlsplit 函数

和 urlparse 函数类似,只是不会单独拆分 params 部分

(4)拼接URL

① urllib.parse 模块的urlunparse 函数

接收一个可迭代的对象,长度为 7,以此构造一个 URL

② urllib.parse 模块的urlunsplit 函数

接收一个可迭代的对象,长度为 6,以此构造一个 URL

③ urllib.parse 模块的urljoin 函数

会分析基础链接的 scheme、netloc 和 path 的内容,并对新链接缺失的部分进行补充

四、中文 URL 编解码

1.urllib.parse 模块的quote 函数

URL 中的中文字符转换为 URL 编码

2.urllib.parse 模块的unquote 函数

对 URL 进行解码

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Python自带爬虫库urllib使用大全
使用urllib
Py之urllib2:Python库之urllib、urllib2、urllib3系列简介、安装、使用方法之详细攻略
python爬虫-使用cookie登录
Python爬虫之urllib模拟登录及cookie的那点事
Python爬虫:一些常用的爬虫技巧总结
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服