了解代理,技高一筹

代理,如果没有,那就告诉人家你是python3.6,,,那还爬锤子!?
所定制请求头,创建请求对象 Request()
高级功能:使用代理,cookie
handler 处理器、自定义Opener

代理是什么?
代替厂家卖货,代考,代练,代驾,代练
正向代理 客户端->代理服务器->服务端 反向代理
百度可以给很多地方同时服务,子服务器

如果频繁的请求服务器,ip会被封掉,所以搞一个代理服务器,换代理服务器呗
正向代理:代理客户端获取数据
反向代理:代理服务器获取数据
代理分为:匿名代理、最高匿名代理、透明代理
代理服务器,得买,虽然免费,但是不能用的多,不太稳定。便宜没好货
浏览器设置:浏览器->右击三点->高级设置->打开代理->局域网->为lan设置代理
那么我们如何设置代理呢?

  1. 浏览器右上角三个点他,然后点设置

在这里插入图片描述
3.
在这里插入图片描述
4.在这里插入图片描述
这样你就可以用别人的ip地址进行爬虫了,但是爬的太快太多也会被禁用ip,只能换了。继续这样手操,岂不是更麻烦?别急,我们可以用代码来实现代理ip地址的快速更换
代码设置:

handler = urllib.request.ProxyHandler({'http':'ip:端口号'})
opener = urllib.request.build_opener(handler)
 cookie 是什么   保存客户的信息
http 协议,无状态
网站登录时候,记录用户身份,模拟登录

***opener 的方法可以吧cookie的值保存在opener中
== urllib.request.urlopen(request)–>opener.open(request)==

下面举个小案例

import urllib.request
import urllib.parse

url='http://www.baidu.com/'
headers = {
		'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36'
}
#创建一个handler
handler = urllib.request.HTTPHandler()
#通过handler创建一个opener,不要在使用URLopen了,用opener
opener = urllib.request.build_opener(handler)
request = urllib.request.Request(url,headers = headers)
response = opener.open(request);
print(response.read().decode())

如果遇见的是登录过的文章,没有cookie是不能爬,就像登录过的人人网
话不多说源码奉上

import urllib.request
import urllib.parse
headers = {
		'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36',
		'cookie':'anonymid=k3ad9lbd-ltcef3; depovince=GW; _r01_=1; jebe_key=0b708842-d2cf-4871-922e-33e3c51f90d2%7C740c4df663003a31bc5876602e48f67d%7C1574440712911%7C1%7C1574440717198; wp=0; ick_login=2a307c73-448e-4267-a231-fe28353c1b3e; JSESSIONID=abc49Awfrm3lE76xUfx6w; ick=4ff7f819-d8e7-4a93-8eab-e993a492f7b2; XNESSESSIONID=777451e356ef; wp_fold=0; jebecookies=dd1a26da-3cd8-4718-9171-b812ee4baa97|||||; _de=6D26111E6B45BB9077A21F126C928EF0; p=bceb1034d6754dc4999b6b1919bfa2127; first_login_flag=1; ln_uact=15737223865; ln_hurl=http://head.xiaonei.com/photos/0/0/men_main.gif; t=3c64a809a509887e1172e16080fb02a07; societyguester=3c64a809a509887e1172e16080fb02a07; id=972932997; xnsid=68e4454f; ver=7.0; loginfrom=null; jebe_key=0b708842-d2cf-4871-922e-33e3c51f90d2%7C2f26df589cc4584d0b543ed9e6d02199%7C1574493499003%7C1%7C1574493505874'	 
	}
url = 'http://www.renren.com/972932997/profile'

request = urllib.request.Request(url=url,headers=headers)
response = urllib.request.urlopen(request)
with open('人人网2.html','wb') as fp:
	fp.write(response.read());
import urllib.request
import urllib.parse
import http.cookiejar
#真实的模拟浏览器,当发送完post时候讲cookie保存到代码当中
#
#创建一个ck(cookiejar) 对象
cj = http.cookiejar.CookieJar()
#通过cookiejar创建一个handler
handler = urllib.request.HTTPCookieProcessor(cj)
#根据handler创建一个openr
opener = urllib.request.build_opener(handler)
#【注】 urllib.request.urlopen-->opener.open() 可以将cookie保存到opener
post_url='http://www.renren.com/ajaxLogin/login?1=1&uniqueTimestamp=20191061537226/'

headers = {
	'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36'
}
formdata = {
	'email':'15737223865',
	'icode':'',	
	'origURL':'http://www.renren.com/home',
	'domain':'renren.com',
	'key_id':'1',
	'captcha_type':'web_login',
	'password':'8c21708a435ba11c73b7a4ced0cc5bdfecdb0d8ab264eec6b7ff5f1ff6a20438',
	'rkey':'8a9fbb66f55b09f87d64c8111173b047',
	'f':'http%3A%2F%2Fwww.renren.com%2F972932997%2Fprofile',
	'cookie':''
}
formdata = urllib.parse.urlencode(formdata).encode()
request = urllib.request.Request(url=post_url,headers=headers)
response = opener.open(request,data=formdata)
print(response.read().decode())
print('*' * 50)
#登录成功后要访问登录成功的页面

get_url='http://www.renren.com/972932997/profile';
request = urllib.request.Request(url=get_url,headers=headers)
response =opener.open(request)
print(response.read().decode())
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值