爬虫2文强123

二,爬虫处理cookie和session带上cookie和session的好处:

一个cookie和session往往和一个用户对应,访问太快容易被服务器检测出来爬虫1不需要cookie的时候尽量不要用

三,处理session,cookie请求1,cookie请求方式1.1直接使用浏览器抓包到的现有的cookie进行访问网站:放在header字典里面

header={"User-Agent":"Mozilla/5.0(X11;Ubuntu;Linu…)Gecko/20100101Firefox/64.0","Cookie":"csrftoken=JfnuMOvgMGZTxtCjvgfZ…6246vb2;username=chengyangkj",}r=request.get(url,headers=header)12345当然也可以在发送get请求时加上cookies的字典参数:

Cookie="csrftoken=JfnuMOvgMGZTxtCjvgfZ…6246vb2;username=chengyangkj"1但是接受的参数是字典类型的,这就需要我们适用字符串分割方法把cookie字符串转为字典形式:

cookie保存在浏览器中,很多浏览器限制一个站点最多保存20个cookiesession存在服务器中。

爬虫cookie和session1.带上cookie和session的好处能够请求到登陆后的页面2,弊端一套cookie和session往往对应一个用户,请求太快,请求次数太多,容易被识别为爬虫

不需要cookie的时候尽量不去使用cookie但是有时为了获取登陆的页面,必须发送带有cookie的请求

处理cookie和sessionsessionrequests提供了一个sessiion类,来实现客户端和服务器端的会话保持使用的方法:1.实例化一个session对象2.让session来发送get或post请求

session=requests.session()response=session.get(url,headers)例子:第一种方法:

importrequestsdefrun():headers={'User-Agent':'ozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/70.0.3538.67Safari/537.36'}data={'username':'xxxx','password':'xxxx'

if__name__=='__main__':run()

第二种方法,直接获取cookie放在headers中

第三种方式:将cookies字典化

获取登陆后的页面三种方式1.实例化session,使用session发送post请求,然后在使用session.get获取登陆后的信息2,将cookie信息加入到headers中3,将cookies字典化,然后调用

PASSWORD='[{"userId":"**","password":"**"}]'

s.headers.update({'Content-Type':'application/x-www-form-urlencoded'})payload=''forcountinrange(0,5):printcounttry:rsp=s.post('URL',data=payload)#该URL为需要获取数据页面的F12请求正文内容#print"rsp",rspbreakexceptrequests.exceptions.ConnectionError:time.sleep(1)continue#print"rsp",rspexportfile="D:/data.xls"

withopen(exportfile,'wb')asout_file:forchunkinrsp.iter_content():#将文本流保存到文件out_file.write(chunk)#若数据无效,则删除文件f=open(exportfile,'rb')lines=f.read()isinvalid=re.search("javascript",lines)if(len(lines)==0)or(isinvalidisnotNone):print"thisisemptydata,systemwilldeleteit"f.close()os.remove(exportfile)else:print"thisisvaliddata"time.sleep(40)

一、为什么要使用Cookie

它们的关系:CookieJar–派生–>FileCookieJar–派生–>MozillaCookieJar和LWPCookieJar

二、实战

1.背景介绍

在伯乐在线有这么一个有趣的模块,面向对象,它说白了就是提供了一个程序员(媛)网上相亲的平台。

它的样子是这样的:

如果登陆了账号,获取联系方式的地方是这个样子的:

在讲解之前,推荐一款抓包工具–Fiddler,可以在GoogleChrome的Google商店下载这个插件,它的样子是这样的:

可以看到,通过这个插件,我们可以很容易找到Post的FormData等信息,很方便,当然也可以用之前讲得浏览器审查元素的方式查看这些信息。

2.过程分析

在伯乐在线首页点击登陆的按钮,Fiddler的抓包内容如下:

从上图可以看出,真正请求的url是

FormData的内容记住,这些是我们编程需要用到的。user_login是用户名,user_pass是用户密码。

从上图可以看出,此刻真正请求的url是

3.测试

1)将Cookie保存到变量中

首先,我们先利用CookieJar对象实现获取cookie的功能,存储到变量中,先来感受一下:

2)保存Cookie到文件

在上面的方法中,我们将cookie保存到了cookie这个变量中,如果我们想将cookie保存到文件中该怎么做呢?方便以后直接读取文件使用,这时,我们就要用到FileCookieJar这个对象了,在这里我们使用它的子类MozillaCookieJar来实现Cookie的保存,编写代码如下:

if__name__=='__main__':

ignore_discard的意思是即使cookies将被丢弃也将它保存下来;

ignore_expires的意思是如果在该文件中cookies已经存在,则覆盖原文件写入。

在这里,我们将这两个全部设置为True。

运行之后,cookies将被保存到cookie.txt文件中。我们可以查看自己查看下cookie.txt这个文件的内容。

3)从文件中获取Cookie并访问

我们已经做到把Cookie保存到文件中了,如果以后想使用,可以利用下面的方法来读取cookie并访问网站,感受一下:

4.编写代码

我们利用CookieJar对象实现获取cookie的功能,存储到变量中。然后使用这个cookie变量创建opener,使用这个设置好cookie的opener即可模拟登陆,同笔记四中讲到的IP代理的使用方法类似。

创建cookie_test.py文件,编写代码如下:

1.获取需要提交的数据

使用chrome的Network或者fiddler可以很轻易的得到我们想要的数据,这里使用fiddler举例。

打开fiddler

输入完账户信息和验证码后,为了方便查找,推荐点击清除清空会话记录

点击右下角的花朵即可送一朵花,左上角显示当前剩余数量,规则是每两分钟花朵数量恢复成100,每个账号可以一直送。如果仅仅是点击花朵形状可以一直送花的话,是很简单的,关键问题在于它时不时会跳出滑动验证码,如下图所示,这时候就需要解决验证码的问题了,当然了,这部分代码我是参考的别人的。

defopen(self):self.driver.get(self.url)

defget_pic(self):time.sleep(2)target=browser.find_element_by_class_name("yidun_bg-img")template=browser.find_element_by_class_name("yidun_jigsaw")target_link=target.get_attribute('src')template_link=template.get_attribute('src')target_img=Image.open(BytesIO(requests.get(target_link).content))template_img=Image.open(BytesIO(requests.get(template_link).content))target_img.save('target.jpg')template_img.save('template.png')size_orign=target.sizelocal_img=Image.open('target.jpg')size_loc=local_img.sizeself.zoom=320/int(size_loc[0])

defget_tracks(self,distance):print(distance)distance+=20v=0t=0.2forward_tracks=[]current=0mid=distance*3/5whilecurrent

back_tracks=[-3,-3,-2,-2,-2,-2,-2,-1,-1,-1]return{'forward_tracks':forward_tracks,'back_tracks':back_tracks}

defmatch(self,target,template):img_rgb=cv2.imread(target)img_gray=cv2.cvtColor(img_rgb,cv2.COLOR_BGR2GRAY)template=cv2.imread(template,0)run=1w,h=template.shape[::-1]print(w,h)res=cv2.matchTemplate(img_gray,template,cv2.TM_CCOEFF_NORMED)#使用二分法查找阈值的精确值L=0R=1whilerun<20:run+=1threshold=(R+L)/2ifthreshold<0:print('Error')returnNoneloc=np.where(res>=threshold)#print(len(loc[1]))iflen(loc[1])>1:L+=(R-L)/2eliflen(loc[1])==1:print('目标区域起点x坐标为:%d'%loc[1][0])breakeliflen(loc[1])<1:R-=(R-L)/2

returnloc[1][0]

defcrack_slider(self,browser):#self.open()target='target.jpg'template='template.png'self.get_pic()distance=self.match(target,template)zoo=1.36#缩放系数,需要自己调整大小tracks=self.get_tracks((distance+7)*zoo)#对位移的缩放计算#print(tracks)slider=browser.find_element_by_class_name("yidun_slider")ActionChains(browser).click_and_hold(slider).perform()

fortrackintracks['forward_tracks']:ActionChains(browser).move_by_offset(xoffset=track,yoffset=0).perform()

time.sleep(0.5)forback_tracksintracks['back_tracks']:ActionChains(browser).move_by_offset(xoffset=back_tracks,yoffset=0).perform()

ActionChains(browser).move_by_offset(xoffset=-3,yoffset=0).perform()ActionChains(browser).move_by_offset(xoffset=3,yoffset=0).perform()time.sleep(0.5)ActionChains(browser).release().perform()try:failure=WebDriverWait(browser,5).until(EC.text_to_be_present_in_element((By.CLASS_NAME,'yidun_tips__text'),'向右滑动滑块填充拼图'))print(failure)except:print('验证成功')returnNone

iffailure:self.crack_slider(browser)

#if__name__=='__main__':browser=webdriver.Chrome()

browser.implicitly_wait(10)browser.switch_to_window(browser.window_handles[-1])c=CrackSlider()k=1foriinrange(1,70000):try:elem=browser.find_element_by_class_name("idol_vote_info")elem.click()time.sleep(0.2)#设置点击50次刷新一次ifk%50==0:browser.refresh()#刷新方法refreshprint('testpass:refreshsuccessful')#点击110次休眠50s,可以自己设置ifk%110==0:print("click",k)time.sleep(50)k+=1except:print('-----需要验证-----')c.crack_slider(browser)不过代码仍然有不完善的地方,因为验证码拖动是借鉴的别人的代码,我也没有深入理解,这个验证大概需要拖动两三次才验证成功,不过我觉得已经够用了。还有程序偶尔会报错停止运行,这时候就可以再写一个小程序,监控这个程序有没有挂掉,挂掉的话重新运行该程序即可。监控的程序runner.py如下:

importosfromsysimportargv

if__name__=='__main__':whileos.system('python'+''.join(argv[1:])):print('Haltedbyexception,restart')在命令行中输入

THE END
1.百合网免费沟通免费交友免费征婚相亲注册 登录 获取验证码 注册 注册即表示同意百合网注册服务条款 百合佳缘网络集团股份有限公司 010-50863711 京ICP备10009806号-1http://wap.baihe.com/
2.不跟婆婆来往的窍门而对于那些无奈选择走向法律途径的人来说,更重要的是理解自己的权益,同时也要做好准备迎接可能出现的情境变化。在这个过程中,每个人都应该找到适合自己的方法,以达到心灵上的平衡和幸福状态。 标签:两个女孩子如何bilibili、不需要验证码的相亲网站、一伴婚恋app官网下载、刚谈恋爱怎么培养感情、2020最新撩妹句子https://www.uw10zt8ii.cn/lian-ai-ji-qiao/294231.html
3.相亲网站哪个靠谱征婚网站哪个靠谱2024年相亲网十大排行榜最新发布,相亲网排行榜前十名有世纪佳缘、珍爱网、百合网、有缘、伊对、对缘、我主良缘、趣约会、牵手、心遇。相亲网10大排行榜由品牌研究部门收集整理大数据分析研究得出,帮助你了解交友网站哪个好。https://m.maigoo.com/maigoo/937hun_index.html
4.手机收不到QQ验证码应该如何办手机收不到QQ验证码应该如何办 1、耐心等待一下,可能是网络出现了延迟导致的,后续应该会发送给你。2、手机的安全软件设置了短信拦截,因此验证码发送过来直接被拦截了,建议用户可以尝试将安全软件先关闭,然后在进行验证码发送。3、短信的内存爆满了,有些用户不喜欢删除短信,因此累积了很多,因此收不到短信验证码了。https://www.64365.com/special/20518013/
5.如何选择可靠的相亲网站?推荐爱渡高端婚恋网站关于这个问题,很多人推荐了爱渡高端婚恋网站。至于爱渡高端婚恋网站到底怎么样?它是否真的值得被推荐?这就需要从多个方面来考量了。根据我的个人分析总结,爱渡高端婚恋网站还是相对可靠的。如果你实在不知道哪个相亲网站比较可靠,我建议你可以试试爱渡高端婚恋网站。http://www.idoemotion.com/sys-nd/314.html
6.www.haoyi999.net/mokaka35778.html在枪击案发生后,不少媒体都将注意放在枪手亚当?兰扎身上,并纷纷揣测是什么让他对孩子痛下狠手。目前公开的唯一一张兰扎的照片显示,兰扎看上去青涩腼腆,和外界对他的印象基本一致。他的多位同学认为他“聪明”但不善交际,还时常避免引起外界注意。兰扎在高中时成绩优异,近几年有好几家当地媒体都报道他是荣誉学生http://www.haoyi999.net/mokaka35778.html
7.www.whfm88.com/mokaka56858.html“DOT&E对将集成到KC-46上的ALR-69A雷达告警接收机(RWR)的评价进一步增加了该项目的复杂性,该部件由雷神公司建造,主要用于探测、识别和定位威胁电信号。DOT&E报告称,该组件“有效性不足且需要在集成到KC-46A之前进行解决。”(中国航空工业发展研究中心 王萍)_——。https://www.whfm88.com/mokaka56858.html
8.www.56pack.com/mokaka24012.html我们注意到前不久,无论是美方还是韩方,都多次公开表示和平解决半岛核问题最符合各方利益。既然大家都认识到和平解决最符合各方利益,那大家需要认真考虑的问题是如何才能和平解决。希望各方再认真阅研一下安理会相关决议,为推动尽快复谈和平解决半岛问题作出切实努力。||。 http://www.56pack.com/mokaka24012.html
9.www.qdfengdong.com/mokaka31099.html12月5日,标普将希腊评级由CCC降至选择性违约,认为希腊公布的债券回购计划理论上属于债务重组,相当于发行人违约。_——。 ,私人A片免费观看 二,日逼的图片,真实,破处学生妹 三,全红婵家乡连夜修路建停车场,国产x88av 四,h动漫混浴,五月天色日B爽 五,欧美中文字幕在线网站免费,麻果AV女优在线播放 http://www.qdfengdong.com/mokaka31099.html
10.梦幻比较好的婚恋网站有哪些社会新闻11月25日,顾客试衣服小时买走件,将军不可以林修徐婉小说知乎,知道错了就自己拿鞭子过来,难驭小说臣年笔趣阁,晚娘下部罪色无删减,火蓝刀锋2为什么下架了,慢性折磨呕吐室榨汁婴儿,官场少妇被潜第四部,视频聊天免费外网,图书管理员的女主1-4,机器人和总裁的双男主,七扑夫君。 11月25日,薛凯琪把陈小http://m.ouzhehua.com/v/video/976190736620241124.shtml
11.基于springboot+vue.js+uniapp的相亲网站附带文章源码部署视频{annotation=((HandlerMethod)handler).getMethodAnnotation(IgnoreAuth.class);}else{returntrue;}// 从header中获取tokenStringtoken=request.getHeader(LOGIN_TOKEN_KEY);/** * 不需要验证权限的方法直接放过 */if(annotation!=null){returntrue;}https://blog.csdn.net/fanheng1231/article/details/139891083
12.伊对相亲网用lD账号可不可以查到对方的身份证号,我加微信然后被亲在吗,我想问一下伊对相亲网用lD账号可不可以查到对方的身份证号,我加微信然后被诈骗了一万8。https://mip.findlaw.cn/ask/question_57784905.html
13.速配网- 速配网是面向全球华人的自助式征婚网站,免费注册,我们为真诚会员提供更多免费婚恋服务! - 速配网专注于网上征婚,不是婚介,不做交友,不良交友目的者请勿进入,一经发现即刻封存。 - 六星级真诚指数体系提高会员的真实性,请注册后积极提交证件,并优先与真诚会员联系。 - 如果你是单身,真诚想找恋人、找对象、找老公http://www.supei.com/
14.专为农村在外务工的单身工友打造的相亲交友网站忘记密码?短信验证码登录 登录 相约七月七是什么? 已有3800000人找到了幸福 在北京、上海等外地工作也能通过七月七找到同城单身老乡 送秋波 送玫瑰 聊天 无所不能 约见无需再回老家 海量会员 金牌红娘一对一精准匹配 一不小心遇到邻村的Ta 加入七月七不是在相亲 就是在去相亲的路上 http://suiping.cuncunmei.com/
15.一线姻缘官网一线姻缘:没有机器人、没有系统发信;不花钱也能聊、先牵线后付费;实行实名制、重视婚恋安全;只征婚不交友、用户质量高。找对象,上一线姻缘,高品质实名婚恋相亲交友网站!同城婚恋交友网站有哪些?哪个好?征婚、交友、相亲、找对象上什么网站比较好?一线姻缘,国内免http://11yinyuan.com/
16.5分钟被骗走半年工资:2019最新骗局曝光,让人触目惊心!骗子为了骗取钱财,需要我们的个人信息来获取我们的信任,同时需要验证码来实施诈骗。 所以,在任何时候,我们都不能泄露验证码、身份证号等个人信息。 要记住,官方平台是不会向你口头索要验证码的,一旦对方向你索要验证码,百分之百是骗子。 平时,我们也要少上不正规的网站、app,不随意泄露自己的真名,注意保护个人信息https://gaj.benxi.gov.cn/xqfj/bxmzzzxgaj/jftx/content_416166
17.2021年,这些骗局仍需严防一是当遇到自称卖家的电话说需要退款或者重新支付时,要亲自登录官方购物网站查询,或者拨打正规客服,不要轻易点击所谓店家提供的网址,更不能在这些网页上填写相关信息。 二是各类购物平台的客服人员不会提出用户提供个人银行卡信息及转账要求。 三是银行卡号、密码和验证码信息要保管妥当,不要轻易外泄。 https://www.meipian.cn/3dqqm3bw
18.池州人网相亲让缘分不期而遇池州人网相亲 本地真实靠谱的相亲网站 | 红娘1V1服务https://love.chizhouren.com/
19.相亲交友软件搭建(快速搭建H5源码开发)相亲交友软件搭建(快速搭建、h5、源码开发)相亲交友网页搭建,yixun-apr168,相亲交友平台搭建、相亲交友源码 多种方式登录 一、验证码登录 1、验证码时效 为了保证用户的隐私安全,一般相亲交友app开发的验证码登录方式,需要限定一下验证码的使用时效,可获取验证码的时间间隔,以及一个手机号在相同时间段可获取的验证码数https://m.11467.com/product/d13836678.htm
20.马鞍山婚介马鞍山征婚马鞍山相亲马鞍山婚恋验证码: 接受服务声明和隐私保护 康桥最新动态 【18560864106】成功提取联系方式,与心仪对象更进一步! 【禾火】成功升级VIP会员,获得更多特权! 【良帅】成功升级VIP会员,获得更多特权! 【凝蝶冰凡】成功升级VIP会员,获得更多特权! 【心心缘】成功升级VIP会员,获得更多特权! http://mas.love63.cn/