ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

爬虫_urllib_handler处理器

2022-05-24 13:32:15  阅读:195  来源: 互联网

标签:url handler request 爬虫 urllib headers opener


为什么要学习handler?

  如果定制更高级的请求头,随着业务逻辑的复杂请求对象的定制已经满足不了我们的需求(动态cookie和代理不能使用请求对象的定制)

1.Handler处理器的基本使用

#Handler的基本使用
import urllib.request
url = 'http://www.baidu.com'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36'
}
request = urllib.request.Request(url=url,headers=headers)

# handler build_opener  open
#(1)获取handler对象
handler = urllib.request.HTTPHandler()
#(2)获取opener对象
opener = urllib.request.build_opener(handler)
#(3)调用open方法
response = opener.open(request)

content = response.read().decode('utf-8')

print(content)

 

2.代理服务器

2.1 代理的常用功能?

1)突破自身IP访问限制,访问国外站点

2)访问一些单位或团体内部资源

3)提高访问速度

  通常代理服务器都设置一个较大的硬盘缓冲区,当有外界的信息通过时,同时也将其保存到缓冲区中,当其他用户再访问相同的信息时,则直接由缓冲区中取出信息,传给用户,以提高访问速度

4)隐藏真实IP

  上网者也可以通过这种方法隐藏自己的IP,免受攻击

2.2 代码配置代理

创建Request对象

创建ProxyHandler对象

用handler对象创建opener对象

使用opener.open函数发送请求

import urllib.request

url = 'http://www.baidu.com/s?wd=ip'

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36'
}

#请求对象的定制
request = urllib.request.Request(url=url,headers=headers)

#代理模拟浏览器访问服务器
#代理ip设置,“快代理”找免费IP,免费不好使就花钱买一个IP
proxies = {
'http':'39.99.54.91:80'
}
handler = urllib.request.ProxyHandler(proxies = proxies)
opener = urllib.request.build_opener(handler)
response = opener.open(request)

#获取响应的信息
content = response.read().decode('utf-8')
#保存
with open('daili.html','w',encoding='utf-8')as fp:
    fp.write(content)

代理ip网站:https://free.kuaidaili.com/free/

3.代理池

#代理池设置
import urllib.request

proxies_pool = [
    {'http':'118.24.219.151.16817'},
    {'http':'118.24.219.151.16817'},
]

import random
proxies = random.choice(proxies_pool)

url = 'http://www.baidu.com/s?wd=ip'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36'
}
request = urllib.request.Request(url=url,headers=headers)
handler = urllib.request.ProxyHandler(proxies=proxies)
opener = urllib.request.build_opener(handler)
response = opener.open(request)
content = response.read().decode('utf-8')
with open('daili.html','w',encoding='utf-8')as fp:
    fp.write(content)

标签:url,handler,request,爬虫,urllib,headers,opener
来源: https://www.cnblogs.com/ckfuture/p/16305227.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有