preservelog选项在哪里

首页 > 实用技巧 > 作者:YD1662023-07-30 21:51:59

每一个请求,都会有一个Request Headers,我们把它称作请求头。它里面会有一些关于该请求的基本信息,比如:这个请求是从什么设备什么浏览器上发出?这个请求是从哪个页面跳转而来?
如上图,user-agent(中文:用户代理)会记录你电脑的信息和浏览器版本,如果我们想告知服务器,我们不是爬虫,而是一个正常的浏览器。就要去修改user-agent。倘若不修改,那么这里的默认值就会是Python,会被服务器认出来。

origin(中文:源头)和referer(中文:引用来源)则记录了这个请求,最初的起源是来自哪个页面。它们的区别是referer会比origin携带的信息更多些。
对于爬取某些特定信息,也要求你注明请求的来源,即origin或referer的内容。


如何添加Request Headers

import requests url = 'https://blog.csdn.net/phoenix/web/v1/comment/list/108858689?page=1&size=10&commentId=' headers = { 'origin':'https://lion-wu.blog.csdn.net', # 请求来源,本案例中其实是不需要加这个参数的,只是为了演示 'referer':'https://lion-wu.blog.csdn.net/article/details/108858689', # 请求来源,携带的信息比“origin”更丰富,本案例中其实是不需要加这个参数的,只是为了演示 'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36' # 标记了请求从什么设备,什么浏览器上发出 } # 伪装请求头 res = requests.get(url,headers=headers) 1234567891011121314

好极,干!!!


进击吧!小爬虫

这次,我给小爬虫进行了一波易容,可能是它长得不符合服务器的审美吧,所以次次碰壁,这次易容之后,不知道有没有长到服务器的审美上去呢?让我们拭目以待吧!!!

import requests url = 'https://blog.csdn.net/phoenix/web/v1/comment/list/108858689?page=1&size=10&commentId=' headers = { 'origin':'https://lion-wu.blog.csdn.net', # 请求来源,本案例中其实是不需要加这个参数的,只是为了演示 'referer':'https://lion-wu.blog.csdn.net/article/details/108858689', # 请求来源,携带的信息比“origin”更丰富,本案例中其实是不需要加这个参数的,只是为了演示 'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36' # 标记了请求从什么设备,什么浏览器上发出 } # 伪装请求头 res = requests.get(url,headers=headers) print(res.status_code) print(res.text) 1234567891011121314151617

bash:129$ python ~/classroom/apps-2-id-5c3d89848939b4000100e7f5/129/main.py 200 {"code":200,"message":"success","data":{"count":60,"pageCount":6,"floorCount":59,"list":[{"info":{"commentId":13646053,"articleId":108858689,"parentId":0,"postTime":"2020-10-30 11:03:45","content":"删除多张表:自己想 O(∩_∩)O~","userName":"qq_43055855","digg":2,"diggArr":[],"parentUserName":null,"parentNickName":null,"avatar":"https://profile.csdnimg.cn/C/B/3/3_qq_43055855","nickName":"海海不掉头发","dateFormat":"6天前","tag":"码皇","parentTag":null,"years":null,"vip":null,"vipIcon":null,"companyBlog":null,"companyBlogIcon":null,"flag":null,"flagIcon":null,"levelIcon":null},"sub": 123

我就截取一点吧,太大了,可以看出来截下来了就好。

别说了,也可以自己去解析一下,这个以我们之前学的解不了。后面我解给你看。


小爬虫被骗啦

当服务器遇上了整容过后的小爬虫,终于“门户大开”,大方的给了一页的数据,一页的数据,一页。。。

但是我要的是全部啊,你就给我一页就想打发我?打发叫花子呢?

那怎么办呢?这个死渣男,小气得很呐,看来又要我们自己动脑筋咯。


带参请求数据

还记得我们最开始是怎么找到评论区的包吗?对,我没说,我是先将页面清空,然后请求访问了第二个页面,这时候就出现了一个新包,用脚指头想都知道那就是第二个页面的包,不过我还是想用第一个页面,于是我就切回去了。

那我们再想想,这些数据我们是在哪里找到的?我不希望看到你们说Preview啊,想清楚啊,想这样说的朋友,给你们一次重新组织语言的机会。

对,明明就是在Headers的General的url里面找到的嘛,Preview怎么爬?对吧。

本来不想多废话,但是我喜欢分析url,所以就多说两句呗。

第一个页面的URL:https://blog.csdn.net/phoenix/web/v1/comment/list/108858689?page=1&size=10&commentId= 第二个页面的URL:https://blog.csdn.net/phoenix/web/v1/comment/list/108858689?page=2&size=10&commentId= 第三个页面的URL:https://blog.csdn.net/phoenix/web/v1/comment/list/108858689?page=3&size=10&commentId= 123

一目了然了吧,不用我再多放了。

import requests from bs4 import BeautifulSoup import json headers = { 'origin':'https://lion-wu.blog.csdn.net', # 请求来源,本案例中其实是不需要加这个参数的,只是为了演示 'referer':'https://lion-wu.blog.csdn.net/article/details/108858689', # 请求来源,携带的信息比“origin”更丰富,本案例中其实是不需要加这个参数的,只是为了演示 'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36' # 标记了请求从什么设备,什么浏览器上发出 } # 伪装请求头 for i in range(5): res = requests.get('https://blog.csdn.net/phoenix/web/v1/comment/list/108858689?page=' str(i) '&size=10&commentId=',headers=headers) print(res.status_code) soup = BeautifulSoup(res.text,'html.parser') json_items = json.loads(soup.text) items = json_items['data']['list'] for item in items: print(item['info']['content']) print('\n' '----------' '\n') 12345678910111213141516171819202122232425


强行灌输知识点

有时候呢,你会发现你抓取的几个页面不过是在重复(强行灌输知识点)

那就灌一下吧。

preservelog选项在哪里,(17)

我也不知道什么是就要用上,反正先写上。

所以,其实我们可以把Query String Parameters里的内容,直接复制下来,封装为一个字典,传递给params。只是有一点要特别注意:要给他们打引号,让它们变字符串。

所以,代码最后可能长这样:

伪代码

import requests # 引用requests模块 url = 'https://blog.csdn.net/phoenix/web/v1/comment/list/108858689' for i in range(5): 'params' = { 'page': str(i) 'size': '10' 'commentId': } # 将参数封装为字典 res_comments = requests.get(url,params=params,头) 123456789101112


好极,好极,这篇就到这里啦,爽呐。

下一篇会比较轻松一些,这篇信息量有点大啊。

preservelog选项在哪里,(18)

最后多说一句,想学习Python可联系阿喵,这里有我自己整理的整套python学习资料和路线,想要这些资料的都可以关注阿喵,并私信“01”领取。

上一页12345末页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.