动态ip

>

代理ip软件

>

换ip软件

>

HTTP代理

>
Socks5代理
黑核动态ip代理
您的位置: 首页 > 新闻资讯 > 正文

Python3爬虫代理服务器与cookie的使用

发布时间:2019-05-14 10:02:55 来源:黑核动态ip代理

分享到

  有时使用同一个IP去爬取同一个网站上的网页,久了之后会被该网站服务器屏蔽。那么怎么解决这个问题呢?解决的方法很简单,就是使用代理服务器

  使用代理服务器去爬取某个网站的内容的时候,在对方的网站上,显示的不是我们真实的IP地址,而是代理服务器的IP地址。并且在Python爬虫中,使用代理服务器设置起来也很简单。

  给大家推荐一个网址,https://www.dongtaiip.net/,这上面可以免费试用代理ip

  选择好代理ip地址后,我们就可以进行相应的程序编写了,可以使用以下程序,实现通过代理服务器来爬取网站内容。

def use_proxy(proxy_addr,url):    import urllib.request
    proxy=urllib.request.ProxyHandler({'http':proxy_addr})
    opener=urllib.request.build_opener(proxy,urllib.request.HTTPHandler)
    urllib.request.install_opener(opener)
    data=urllib.request.urlopen(url).read().decode('utf8')    return data

proxy_addr='61.163.39.70:9999'data=use_proxy(proxy_addr,'http://www.baidu.com')
print(len(data))

  我们首先建立一个名为use_proxy的自定义函数,该函数主要实现使用代理服务器来爬取某个URL网页的功能。

  在函数中,我们设置两个形参,第一个形参为代理服务器的地址,第二个形参代表要爬取的网页的地址。

  然后,使用urllib.request.ProxyHandler()来设置对应的代理服务器信息,设置格式为:urllib.request.ProxyHandler({‘http’:代理服务器地址}),接下来,使用urllib.request.build_opener()创建了一个自定义的opener对象,第一个参数为代理信息,第二个参数为urllib.request.HTTPHandler类。

  为了方便,可以使用urllib.request.install_opener()创建全局默认的opener对象,那么,在使用urlopen()时亦会使用我们安装的opener对象,所以我们下面才可以直接使用urllib.request.urlopen()打开对应网址爬取网页并读取,编码后赋给变量data,最后返回data的值。

  如果在使用代理服务器进行网站爬取时,出现相应异常,则需要考虑是否对应的代理IP失效了,如果是,换一个代理Ip即可。实际爬取的时候,可以准备多个代理IP,轮流进行爬取,若失效,则程序直接自动替换为其他代理ip地址,进行爬取。

  Cookie的使用

  在爬虫的使用中,如果涉及登录等操作,经常会使用到Cookie。

  那什么是Cookie呢?

  简单来说,我们访问每一个互联网页面,都是通过HTTP协议进行的,而HTTP协议是一个无状态协议,所谓的无状态协议即无法维持会话之间的状态。

  比如,仅使用HTTP协议的话,我们登录一个网站的时候,假如登录成功了,但是当我们访问该网站的其他网页的时候,该登录与状态则会消失,此时还需要再登录一次,只要页面涉及更新,就需要反复的进行登录,这是非常不方便的。

  所以此时,我们需要将对应的会话信息,比如登录成功等信息通过一些方式保存下来,比较常见的方式有两种:通过Cookie保存会话信息或通过Session保存会话信息。

  不管是通过哪种方式进行会话控制,在大部分时候,都会用到Cookie。比如在爬虫的登录中,如果没有Cookie,我们登录成功了一个网页,但如果我们要爬取该网站的其他网页的时候,仍然会是未登录状态。如果有了Cookie,当我们登录成功后,爬取该网站的其他网页时,则会保持登录状态进行内容的爬取。

  实战

  我们拿ChinaUnix这个论坛网址就行实战测试一下吧,网址:http://bbs.chinaunix.net/。

  我注册了一个帐号,进入网址,点击登录。我们会看到这样的界面:

Python3爬虫代理服务器与cookie的使用

  按下F12,此时我们随便输入一个帐号和密码。查看network发生了哪些变化。

  此时,我们找到了其中的一个POST请求,如图:

Python3爬虫代理服务器与cookie的使用

  首先,我们能看到登录时提交表单数据的真实URL:http://bbs.chinaunix.net/member.php?mod=logging&action=login&loginsubmit=yes&loginhash=Lq8Qi

  再往下拉,我们会看到提交的表单数据:

1557799606530720.png

  此时我们知道了,帐号的关键字是username,密码的关键字为password。

  知道了这些,我们就可以开工了。

  我们先测试一下不使用cookie登录成功后,再次访问别的界面会有什么效果:

  代码如下:

import urllib.request
import urllib.parse
import urllib.error
import http.cookiejar

url='http://bbs.chinaunix.net/member.php?mod=logging&action=login&loginsubmit=yes&loginhash=LcHFP'data={    'username':'fengxin88888',    'password':'mima',
}
postdata=urllib.parse.urlencode(data).encode('utf8')#添加头部信息header={    'User-Agent':'Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',    'Referer':'http://bbs.chinaunix.net/member.php?mod=logging&action=login&logsubmit=yes'}

request=urllib.request.Request(url,postdata,headers=header)try:
    reponse=urllib.request.urlopen(request)
except urllib.error.HTTPError as e:
    print(e.code)
    print(e.reason)

fhandle=open('./test.html','wb')    #保存登录后的页面到文件fhandle.write(reponse.read())
fhandle.close()

url2='http://bbs.chinaunix.net/forum-327-1.html'   #再次访问该网站别的页面reponse2=urllib.request.urlopen(url)
fhandle2=open('./test2.html','wb')   #保存到文件中fhandle2.write(reponse2.read())
fhandle2.close()

  别盯着上面代码中的password看了,那个不是真实密码 ,嘿嘿。

  此时,我们先在浏览器打开我们保存的test.html文件,我们会看到:

  我们会发现,此时已经登录成功。我们再打开test2.html文件,看看是什么情况。

  我们会发现,此时是没有登录的状态。

  出现这样的情况,就是因为我们没有设置Cookie处理,而HTTP协议是一个无状态的协议,我们访问了新网页,自然会话信息会消失。

  如果希望登录状态一直保持,则需要进行Cookie处理。

  进行Cookie处理的一种常用思路如下:

  导入Cookie处理模块http.cookiejar。

  使用http.cookiejar.CookieJar()创建CookieJar对象。

  使用HTTPCookieProcessor创建cookie处理器,并以其为参数构建opener对象。

  创建全局默认的opener对象。

  所以,以上代码可以改进为;

import urllib.request
import urllib.parse
import urllib.error
import http.cookiejar

url='http://bbs.chinaunix.net/member.php?mod=logging&action=login&loginsubmit=yes&loginhash=LcHFP'data={    'username':'fengxin88888',    'password':'mima',
}
postdata=urllib.parse.urlencode(data).encode('utf8')
header={    'User-Agent':'Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',    'Referer':'http://bbs.chinaunix.net/member.php?mod=logging&action=login&logsubmit=yes'}

request=urllib.request.Request(url,postdata,headers=header)#使用http.cookiejar.CookieJar()创建CookieJar对象cjar=http.cookiejar.CookieJar()#使用HTTPCookieProcessor创建cookie处理器,并以其为参数构建opener对象cookie=urllib.request.HTTPCookieProcessor(cjar)
opener=urllib.request.build_opener(cookie)#将opener安装为全局urllib.request.install_opener(opener)try:
    reponse=urllib.request.urlopen(request)
except urllib.error.HTTPError as e:
    print(e.code)
    print(e.reason)

fhandle=open('./test.html','wb')
fhandle.write(reponse.read())
fhandle.close()

url2='http://bbs.chinaunix.net/forum-327-1.html'reponse2=urllib.request.urlopen(url)
fhandle2=open('./test2.html','wb')
fhandle2.write(reponse2.read())
fhandle2.close()

  运行完后,此时我们再打开test2.html文件,我们会发现此时会保持我们的登录信息,为已登录状态。

  也就是说,对应的登录状态已经通过Cookie保存。


相关资讯

互联网工作中ip代理是不可缺少的工具

目前,中国的互联网大军正在不断壮大,各种各样依托互联网的新兴行业正在兴起,哪怕是很多传统行业,为了抢占竞争的制高点,也将跟友商之间的竞争搬到了互联网平台之上。对

来源:黑核混拨ip加速器网

2018-12-27 17:45:23

IP加速器的使用方法和简单问题解决办法

IP加速器,顾名思义就是加速IP,提升网络性能,降低网络延迟。黑核混拨ip加速器是一款ip量大速度快的加速器,非游戏外挂,可以放心使用。IP加速器的客户端设置简

来源:黑核混拨ip加速器网

2018-12-28 10:21:44

操作简单又实用的IP加速器

怎么才能自动修改电脑IP地址,有时注册一个账号需要改IP地址才能注册,那么怎么修改电脑的IP地址呢,如果能自动的切换自己网络IP地址?这时候需要用到换ip工具,

来源:黑核混拨ip加速器网

2018-12-28 11:52:51

现在采集越来越难如何找到实用的HTTP代理IP

目前,中国的互联网大军正在不断壮大,各种各样依托互联网的新兴行业正在兴起,哪怕是很多传统行业,为了抢占竞争的制高点,也将跟友商之间的竞争搬到了互联网平台之上。对

来源:黑核混拨ip加速器网

2018-12-28 15:56:10

国内好用又实惠的https代理ip服务器不要错过了

随着大数据时代的到来,爬虫已经成了获取数据的必不可少的方式,在使用爬虫多次爬取同一网站时,经常会被网站的IP反爬虫机制给禁掉,为了解决封禁IP的问题,通常会使用

来源:黑核混拨ip加速器网

2018-12-28 16:55:02

免费的代理ip软件能用吗?

很多网民朋友疑惑,市面中的免费爬虫代理IP到底安不安全?使用后会对自己造成威胁吗?其实大家有这些顾虑是正常的,小编在这里也不推荐使用免费代理IP。一、IP重复率

来源:黑核混拨ip加速器网

2018-12-28 17:34:12

这几招教你解决IP被封的问题

在爬虫时,我们不可避免的会遇到网页的反爬封锁,所以就有了爬虫的攻防,在攻和守之间两股力量不断的抗衡。接下来就讲讲使用爬虫时ip限制问题的六种方法!方法1.1.I

来源:黑核混拨ip加速器网

2018-12-28 17:47:52

爬虫技术工程师为什么离不开ip代理

说到爬虫,自然离不开爬虫代理地址。爬虫是一门随着互联网大数据而应运而生的产物,它主要是为了在海量的网络数据中采集分析有效的数据而诞生的一门技术。无需多言,爬虫技

来源:黑核混拨ip加速器网

2018-12-28 15:24:23

代理IP对爬虫的重要性以及Python3如何设置代理

对于从事互联网工作的朋友来说,代理ip并不是一个陌生的存在,如果你恰好是负责网络爬虫的相关工作,那么每天跟你打交道比较多的就是代理ip了。我们都知道,网络爬虫能

来源:黑核动态ip代理

2019-04-09 11:14:13

实用https代理服务器别人能查到真实地址吗

现在,高匿代理ip时代已经到来,但是,还是有很多人不了解高匿代理ip到底有什么用,虽然随着网络科技的发展,网络对我们的生活带来了很多方便,也带来了更多的选择,网

来源:黑核混拨ip加速器网

2018-12-28 17:02:47

Python3爬虫代理服务器与cookie的使用

有时使用同一个IP去爬取同一个网站上的网页,久了之后会被该网站服务器屏蔽。那么怎么解决这个问题呢?解决的方法很简单,就是使用代理服务器。使用代理服务器去爬取某个

来源:黑核动态ip代理

2019-05-14 10:02:55

在线客服
QQ:800861888
客服电话
400-998-997
微信客服