粉丝830获赞5714

用 passing 提升你的能力境界篇七点二点一使用 request 模块爬取网页 在前面的课程中,我们学习了网页的相关知识,这节课我们学习一下使用 request 模块爬取网页的方法。首先呢,我们介绍一下 python 中爬取网页的三个模块, 大家可以看一下这张表格。这张表格呢,罗列了三个可以爬取网页的模块。第一个呢是 u r lab 模块,它主要侧重于 h t t p 基本的请求功能,比如打开 u r l 发送 h t t p 请求解析 u i r。 第二个模块呢为 u r lip 三。这个模块呢,功能要比第一个模块要强大一些,它除了基本的功能,还具有现成安全连接值、客户端验证等功能。 第三个模块呢就是 request 模块,这个模块呢,应相比于前两个模块功能更强大一些。除了基本的功能,还具有 keep love 连接吃的功能、身份认证的功能、 响应体的功能、国际化域名的功能以及 h t t p h t t p s 代理的功能、自动解压、文件儿分块上传等功能。 这节课呢,我们主要讲解一下使用 request 模块爬取网页的方法。由于 request 这个模块呢是第三方模块,所以我们要安装这个模块。 安装 request 模块的方法是在 windows 的命令行窗口中输入 pipe install request, 然后按 inter 键就可以进行安装。如果安装的速度比较慢,则在这段语句后面加上国内的软件,就像地址,然后按 inter 键,这样安装的速度就比较快。 我们可以使用 request 模块发送 http 协议的 get 请求,它的语法格式如下, 首先呢,我们要引入 request 这个模块,然后使用 request 这个模块下的 get 这个函数呢,发送 h t t p 的 get 请求,返回了一个 response 对象,我们将 response 对象呢复制给变量 response, response 这个对象下呢,有很多的属性,比如可以通过 status 下划线扣的获取返回对象的状态码, 可以通过 url 这个属性呢,获取请求的 url 使用 headers 这个属性呢?获取头部信息,使用 cookies 这个属性呢?获取 response 对象的 cookie 信息, 使用 incoding 这个属性呢,可以获取网页原代码的编码方式,使用 text 这个属性呢,可以以文本的形式获取网页原代码。 response 对象下的 content 这个属性呢?我们可以以自截流的形式获取网页元代码。 下面我们做一个例题演示,实践一下,使用 request 模块爬取百度搜索引擎, 然后打印返回 response 对象中的状态码,请求 u r l 头部信息, cook 信息,网页原代码的编码方式,以及采用 u t f 杠八编码方式的网页。我们演示实践一下,打开 sublam text 编辑器,点击发呀 newfa, 按 ctrl s 保存, 我们将它保存在地盘的 practice 文件夹下,将它命名为七杠一点 p y ant 键。首先呢,我们要引入 request 这个模块, 然后呢,我们使用 request 模块下的 get 这个函数呢,发送 h t t p 协议的 get 请求,并返回 response 对象,我们将返回的 response 对象复制给变量 response, 我们使用 request 点 get, 然后是网址, 然后呢,我们打印返回的状态码, 它的属性为 status code, 然后我们 们打印它的 url, 然后我们打印他的头部信息,然后我们打印他的 cook 信息, 然后我们获取网页原代码的编码方式,并复制给变量扣零, 然后我们打印这个编码方式, 然后呢,我们获取网页员代码的文本信息,以文本的方式获取网页员代码,然后并复制给变量 result 是用 response 点 tax 的这个属性, 然后呢,我们对它进行 utf 编码 without 重新复制 点儿 in code coding, 然后呢再对它 decode utf 杠八,最后呢,我们打进这个结果 without 按 ctrl s 保存。我们运行一下这段代码,打开 windows 的命令行窗口, 我们在其中输入 python 七杠一点 p y ant 键。 大家可以看一下他已经将 获取的信息打印出来的状态码为二百,返回的 u r l 为这个网址,呃头部信息为呃这个字典数据, 然后获取了它的 cookie, 然后它的编码为,大家可以看一下这是 iso 杠八八五九杠幺, 我们这段代码呢,有一个地方比较难理解,也就是第十一行,第十一行的意思就是将,首先呢是 通过应扣的这个函数呢,将网页原代码按照原编码方式转换为二进制字符,然后呢,我们使用编码方式 utf 杠八,嗯,将二进制字符转换为文本。 最后呢,我们打印的这是网页原代码的文本,大家可以看一下它的编码方式呢,一开始为 iso 杠八八五九杠幺,我们通过 u t f 杠八,然后显示了这个文本。 我们也可以使用 request 模块设置请求投信息。首先呢,我们要获取 这个请求的信息,我们可以通过浏览器的开发者工具获取他的浏览, 获取他的请求头信息 hider, 我们通过这个 hider 子呢,可以仿照真实的浏览器来爬取网页,比如这张图片的 user agent, 后面的这些都是他的请求头信息。 设置请求投信息之后,我们获取了请求投信息之后,我们可以使用设置了请求投信息之后的 get 函数 发送 http 的概的请求,大家可以看一下这段代码。首先呢,设置了 hider, 不同的浏览器呢,可以使用不同的,有的 adend 这样呢,可以仿到浏览器来登录网页,获取网页元代吗? 这个地方呢,我们使用 hiders, 等于 hider 这个参数,要设置请求投信息, 我们发送了盖到请求之后,返回了 response 对象,然后呢复制给变量 response, 同样呢,我们通过该对象的 status 下火线扣获取状态码, 使用 u i l 这个属性,获取请求的 u i l 使用 hydro 这个 使用 hiders 这个属性。获取头部信息,使用 cookies 这个属性呢?获取 cookie 信息,使用 inco 这个属性呢?获取网页原代码的编码方式,使用点 text 这个属性呢?获取文本形式的网页原代码。下面我们做一个例题演示实践一下。 根据浏览器的 using 信息,使用 request 模块爬取百度搜索引擎,然后打印返回 response。 对项目中的网页源代码的编码方式以及获取的网页源代码,我们演示实践一下。 首先呢,我们要获取这个浏览器的 user agent, 我们打开浏览器,然后按 f 十二打开开发者工具, 然后呢,我们刷新一下网页, 然后我们找到他的域名,点击这个域名,将上面的数这个点击上面窗口中的网络,然后呢我们向下滑动, 滑到最后我们可以看到这里有个 user aiding 的信息,我们就使用这个 user aiding 的信息来按照题目的要求呢,爬取呃百度搜索引擎的原代码, 我们打开 saveline text 编辑器,点击 far new far, 按 ctrl s 保存,我们将它保 存在地盘的 practice 文件夹下,将它命名为七杠二点 p y 按一条键。首先呢我们要引入 request 的这个模块, 然后呢我们,嗯设置他的请求头信息,最主要的就是浏览器的 you are agent 信息,他是一个, 它是一个字典的数据。然后呢,我们打开浏览器,我们复制一下这段信息 啊, ctrl c ctrl v 啊,这段 很长,我们这个地方要加上单引号,然后单引号, 单引号。然后呢我们,嗯创建它的访问的 url, 并复制给变量 url, 也就是它访问的网址,它的网址为 https 冒号。 然后呢,我们使用 request 模块下的 get 还 函数发送 http 的 get 请求,然后将获取的 response 对象复制给变量 response request 要 get 设置它的参数,第一个呢就是它的 url, 第二个参数呢也就是请求头的信息。 然后呢我们再打印它的编码方式是 including the 后呢,我们再打啊获取它的有获取它的网页原代码是文本的形式。然后呢复制给变量 result, 然后呢我们打印网页原代码,按 ctrl s 保存, 我们运行一下这段代码,打开 windows 的命令行窗口,我们在其中输入 python 七杠二点 p y 按一个键 可以看一下,这一次明显的获取了更多的源代码啊,非常长,我们全部打开,然后向上滑动, 七杠二点 p y, 大家对比一下,我们通过 python 的七杠一点 p y, 它的网页元代码只有这么少,非常少, 这是七杠二点 p y 获取的网页元代码,数量明显的要多了很多,大家可以看一下, 而且呢,它两个之间有很大的不同,我们加入这个请求头信息之后,获取的编码方式为 u t f 杠八,而没有加入请求头信息呢,它的编码方式为 iso 杠八八五九杠幺,这是由于网站的反爬虫系统导致的结果,大家可以看一下, 差别还是挺大的。所以说呢,如果说我们想要爬取比较全面的信息,要添加一下这个请求投信息,最主要的就是 you are alien 的这个浏览器的属性, 下面呢,我们介绍一下 response 对象的属性和方法,我们通过 request get 这个函数呢,可以发送 http 协议的钙的请求,返回 response 对象,大家可以看一下这张表格,这张 表格罗列了 response 对象的属性和方法,比如我们通过 response 的 apparent 下午线已扣顶获得它的编码方式,我们通过该对象下的已扣顶获取解码 response 点 text 编码方式, 我们通过 header 这个属性呢,返回响应头信息,响应头信息是字典格式的信息,我们可以使用该对向下的 reason 返回响应状态的描述, 我们可以通过该对象的 status code 返回 h t t t p 的状态码。二百呢表示 ok, 四零四呢表示 not found, 就是没有找到。我们 通过该对向下的 text 返回响应内容,它是 unicode 的类型数据,我们通过该对向下的 close 这个方法可以关闭与服务器的连接。 我们可以通过该对象下的 daisy, 这个方法呢,返回 daisy 对象, 我们也可以通过 request 下掉方法设置网络超时, 使用了快死模块向网站服务器发送 get 请求,可以设置超时,如果 网站服务器长时间未响应,则系统会判断网页超时,所以无法打开网页。一般来说,视频网站要 加载的内容比较多,服务器的反应比较慢,而搜索网站的服务器反应比较快。下面我们做一个例题演示,实践一下, 使用 request 模块向搜狗网站发送十次概率请求,设置超时为零点零七秒,打印返回 respons 对象的状态码,我们演示实践一下, 打开 sublime text 编辑器,点击 file new file, 按 ctrl s 保存, 我们将它保存在地盘的 practice 文件夹下,将它命名为七杠三点 p y an inter 键。首先呢,我们要引入 很快死的这个模块, 然后呢,我们创建一个变量用来保存这个网址, 然后呢,我们使用 f 循环, 然后是十次,然后呢,我们使用 try 语句。然后呢,我们使用 request 模块下的 get 这个方 发送 h t t p 请求,并返回 response 对象,我们将返回的对象复制给变量 response, 然后 url 这个地方呢,我们要设置它的呃,网络超时,我们使用 time out 这个数,这个参数我们设置为零点零七秒。 然后呢,我们打印返回到 response 对象的状态码, 然后呢是 accept accept, 我们这个地方呢?呃,要打印出它这个异常, accept exception, 将这个异常重命名为异。然后呢,我们打印这个异常, 按 ctrl s 保存。我们运行一下这段代码, 打开 windows 的命令航窗口,让我们向下滑动一下它在这个地方。 然后呢,我们在这个命令行窗口中输入 python 七杠三点 p y 按一个键, 大家可以看一下,如果没有网络超时,他就会返回状态码为二百。 如果网络超时了,它会显示异常,打印它的异常为 http connection po, 然后这是它的域名端口号。然后呢,网络超时啊,设置的网络超时的参数为零点零七秒。


挑战爬一百个网站,今天是 boss 直聘批量采集这节课的话,给大家带来的案例就是关于 python 采集 boss 直聘的一个数据。那么首先在这个页面当中啊,按一个 f p 十二, 按了之后的话我们直接刷新啊,直接刷新让整个网页的数据重新加载一下,好,刷新出来之后的话啊,我们 直接点这个搜索按钮,然后输入我们想要的内容,那公司名字肯定是想要的吧?那我们就搜一下这个上海鲸鱼机器人回车,回车之后的话,我们在这个地方他返回了我们两个接口啊,来截图 啊,第一步的话这里啊点击这个搜索按钮,第二步输入搜索内容 回车。只要是什么呢?只要啊含有搜索结果的啊,搜索内容的数据包都会进行一个返回,那这里的话他返回了一个什么呢?他返回了两个,对,那两个具体哪一个是我们想要的呢? 那我们就可以一个个去看了啊,因为对比整个啊,整个的话他是一百五十多个请求。我们整个网页的话啊, 整个页面的一个数据包有一百五十,一百五十个,对不对?一百五十三个啊,一百五十三个,是不是啊?但是我们通过搜的话就把这个范围缩小到只有这两个了 啊?只有这两个,那这两个具体哪一个是我们想要的呢?我们可以点击数据包去查看啊,就一个个去看啊,首先看第一个, 首先我们来看第一个啊,第一个里面的话有我们的信息吗?有,很明显他是有的,上海那他城市,他的一个经验要求学历,要求工资,然后他的一些,呃,公司的地址啊,七七八八的,反正都都在这里面。是不是都有啊?但是的话问题在于什么呢?问题就是在于他只有一条, 他只有我们当前的一个信息内容。但是我们这里的话,这么多的一个招聘数据信息, 是不是除了这一个上海鲸鱼机器人,还有华为的?那华为科技有限公司的,一个是苏州的,一个是上海的,对,这些数据是不是也得要啊?那我们就看第二个嘛,第二个的话它其实也比较明显,有个 job list 点节省职位列表吧的。 job list 的 话不职位列表吗? 对,在这个里面的话啊,它就存在我们多条数据信息,我们给大家在预览里面看啊,那这里面的话就是包含我们零到多少?一十四就相当于十五条招聘数据信息。 那第一个上海鲸鱼机器人的,然后第二个,那我们的一个苏州工业园区的,华为的,对不对?第三个的话也就是我们那一个,呃,也是华为游戏,华为的,那这个是青浦区啊,但这个城市上海的, 是不是?所以说我们第二个接口里面的话,他才是我们想要的一个数据内容啊?第二个接口才是我们想要的,因为我们去获取数据的话是批量的采集吗?对不对?那我们不可能说只要一个数据啊? 好,那这里面的话就是我们想要的,那我们既然需要的数据在这个里面的话,我们就去看什么呢?看标头啊?看标头, 看标头的话我们就常规的就看他哪几个呢?一个是我们的请求网址,一个是我们的请求头,还有请求方法啊,常规的话就是看这几个东西啊,看这几个这个东西对不对?这个话就是我们的一个数据接口,我们会用到一个加上配置的模块,它是一个自动化的模块, 它方法有很多啊,我们就用方法一就行了,就使用这个方法一就可以,那这边的话有一个代码,那给它粘贴过来,那这个路径的话, 它是文档当中路径,这个肯定跟我们的不一样吧,每个人下载软件安装的时候,它可能放的位置不一样,所以我们得去找到我们浏览器的可执行文件路径。怎么去找呢?给大家演示一下, 那比如说我这里的话,是不是浏览器,我用谷歌啊?有个更多更多,这里话有一个打开文件位置,是不是点开, 点开之后的话,一般情况你刚开始打开的话,他会有一个快捷方式啊,记住啊,这个是快捷方式,他不是应用程序啊,他不是可执行文件,所以我们要在这个快捷方式时候,再右键再打开文件所在位置,直到找到哪个呢?找到这个, 找到这里的话,它会有一个什么呢?应用程序找到之后的话,你就把这个路径复制,然后往这里一粘贴,粘贴之后的话它那个后缀也要加上啊,就它的文件名和文件这一个格式,就这个 e x c 啊,这个的话也要加上,粘贴过来之后你直接运行一下就行了, 运行之后的话,哎,它就会显示一个什么呢?显示个这玩意啊,那就说明你配置成功了,这个代码就可以删掉,就不用管了,因为你配置好的话啊,以后以后的话,它都会帮你自动打开你所配置的那一个浏览器。那我们接下来的话就写代码了 啊,直接先导入一下我们的一个自动化模块, from johnson page import chrome page。 啊,导入进来,导入进来之后的话,我们打开浏览器 d p 等于一个什么呢?它就可以了啊,就两行代码,就这两行代码,你右键一运行,它就会自动帮你打开浏览器, 看到没有啊?它自己就打开了,好吧,啊?这句话要给大家稍微的说一下,其实这个话也叫做什么呢?也叫做实力化浏览器对象啊, 实力化,哎,浏览器对象,然后我们是用了一个变量名接收吧,用了一个 d p 的 变量名去接收这个啊,就是接收这个就相当于什么呢?我们这个 d p 的 话,它就是我们这个打开的浏览器页面 啊,这个 d p 啊就相当于是什么呢?我们打开了这个浏览器的页面, 所以说你要在这个浏览器页面中进行什么样的一些操作啊?进行什么样的操作的话,它就是什么呢?就是使用了什么呢?使用这个 d p 相关的一些方法 啊,就是用了这个 d p 相关的一些方法,然后对于这个 d p 懂了吗?那我们要访问网站的话,要访问啊,让我们这个浏览器去访问一个网站,那,那不就是让我们这个浏览器得到一个网址吗?要访问网站,那是让浏览器得到一个网址,那我们就 d p 点上一个 get, 让它啊得到我们的一个网址,网址的话是哪一个?就是我们的一个 招聘的一个页面嘛,对不对?我们的一个职位页面,来我们运行一下,运行之后的话啊,它就会自动去访问了, 嗯?他怎么还不访问?嘿嘿。 哎,卡住了吗?那我们给他关了啊,我们重新再运行一下, 是不是他是不是就自动去访问了我们这个页面呢?没毛病吧?访问我们这个页面之后啊,那我就可以直接去获取数据啊,所以我们在这个啊,访问网站之前一步先监听数据。 d p 啊,触摸浏览器对不对?点上 listen, listen 就 听的意思。 star, 那 就开始 啊,就监听开始嘛,就是你要监听哪个接口,我们把这个复制过来丢进去啊,丢进去。然后访问之后的话,我们是不是要等待它的一个加载,等待数据包的一个加载 d p, 点上 listen, 点上一个位置啊,等它加载出来,等它加载出来之后,我们用个变量名去接收啊,一个变量接收,接收了之后我们可以直接获取它的响应数据内容, 点上我们的 response, 点 body, 接上这一套,那么 print 打印一下 右键运行啊,这样的话我们就可以干嘛呢?我们先访啊,监听了,然后访问,访问之后等待加载,因为我们网站加载数据它是会有一段时间的,因为我们,呃,可能你的网速问题啊还是什么?它不可能说你, 你访问立马就拿到吧?对,它可能会有一个缓存的过程,所以说我们等待它加载啊,等待加载之后的话,我们就可以拿到它返回的一些数据内容了, 这边的话就是返回了相关的一些职位信息,那他的一些学历啊,七七八八的不都在这里吗?那么第三步解析数据,这个就非常简单,为什么呢?因为我们现在拿到的这个数据是什么数据?这是一个接生字典数据啊, 所以我们只需要通过什么呢?字典取值的一个方式去取就可以了。那我们想要的数据的话,是在这个 java list 里面,对不对?这个 java list 在 哪里?在这个 zp data 里面,其实我们一开始的话,最外层的话应该是这三个,这三个键对, 那这个是啊,冒号左边是它的键,冒号右边是它的值,一个是 call 的 对应的这个 success, 还有一个的话是这个 zp data 对 应的一个字典,我们想要的数据的话,是不是在这个字典里面? 所以我们第一步的话,先取哪个?取这个吧,取这个 zp data 对 不对啊?我们这里写一下,取我们那个 zp data 啊,就这个给它复制一下 啊,取出来之后他会返回冒号右边的,也就是展开了这个数据啊,他会把把这个数据给我们进行返回,那返回的话,这里又分为这么几个建队,我们想要的数据是哪个?是这个 job list, 在 这里面的话就包含了我们整页的一个职位信息,那我们自己是不是再取它, 再取这个啊?那我们也用个这个接收啊,这个相当于什么呢?制定取值,提取职位 信息所在的一个列表啊,所在列表拿到之后的话,这个列表里面一共是包含零到一十四,就十五条数据,我们要把这十五条数据一个个拿出来啊,一个个提取,所以我们得用到一个负循环,便利 提取列表里面的元素 for job in job list。 那 这样的话我们的一个什么呢?啊?我们的这些职位信息的话就全部出来了,就十五条职位信息就全部全部出来了 啊,十五条的一个信息内容是不是都有了啊?有了之后的话,为了方便取值啊,为了方便取值,我们可以导入一个格式化输出的一个模块 啊,用一个格式化输出的模块进行打印啊,因为你像用这个 print 去打印的话,它的数据是什么样子的?就就是一行的啊,就这样子一行。呃,看起来不方便啊,看起来不方便,所以我们可以用个 pprint 打印, 而且解析数据的话,我们打印一个就行了,不用打印那么多啊,因为他的格式都是一样的,打印一条就可以了 啊,这个话就是我们相关的一个数据内容,对不对? ok 啊,我们想要的数据的话,我们简单的截个图啊,简单截个图,看他需要哪些的,有什么数据我们就取什么数据啊,有什么数据就取什么, 那就在循环中啊,提取具体的内容,然后保存到一个字典中,所以我们创建一个字典,然后去取值。首先的话我们来看一下啊,这个话是他的公司名字啊, 公司,根据冒号左边取冒号右边的这个 job 的 话,就是我们这一个字典嘛。啊?公司,然后这个是他的公司规模 啊,公司规模零到二十人,然后我们再往下深圳。对啊,这是它的城市,城市的话放前面 城市,然后这边的话有一个 gps 啊,这个 gps 的 话就它的一个经纬度啊,这个是纬度。这个是经度啊。经纬度 啊。那我们也可以取一下吧。那他公司规模。那这边的话来一个什么呢?来一个精度,精度的话是 gps, 根据冒号取右边啊,左边取右边。那他返回的是这个。这个话我们的精度是哪个?是他吧? 那我们的纬度呢?啊?纬度的话就这个啊,它的经纬度啊,学历不限啊。这个话是它的一个要求啊,它的一个学历的一个要求,然后经验要求的话是我们的三到五年。 打职位名字的话啊,职位名。职位名的话叫 python 啊。 job name 职位名。 ok, 还有其他的吗?薪资。 对啊,一万一到一万三。啊。一万一到一万三。嗯,好像就这些数据吧。啊?基本东西的话你就都拿到了,基本的话就这些啊,基本就这些。呃,但是的话这里有一个问题啊, 有一个问题在于什么呢?问题在于它有一些数据,它不只是它有区域的呀,这个是没有区域啊, 对吧?他应该有些有些职位的话有区域和街道的。你看这个话叫做什么呢?上海青浦区金泽啊,金泽,金泽的话应该是他的商圈。对,所以我们区域的话也要取消。这个是区域啊,但我们这里面是没有显示的,因为他这里只是一个深圳,所以区域的话也得拿一拿 啊。这个话是区域。还有一个的话是商圈啊,商圈的话我们来看一下。这个话是商圈 b u 这个吧,这个话应该是商圈。对呐,商圈。呃。还有一个它的一个公司领域啊,公司领域是做互联网的。对,那我们就写在什么?写在下面啊, 基本的话就这些东西啊,招聘的人的话就不写了 啊,就拿到这些基本的数据,我们来打印看一下这个数据,看这个数据拿到了有没有什么问题,这个的话就不打印了, 这的话就是我们第三步解析,没问题的话我们就第四步了啊,保存数据了啊,这边的话就是用的字典取直的一些方式啊,然后保存数据的话也很简单啊,保存数据的话也特别简单, 那也特别简单,反正它就一个固定写法,导入一下 csv 的 一个模块啊, import csv 创建文件对象, f 等于 open data 点 csv model 等于一个 w, encoding 于 tf 杠八牛奶 字典写入的方法, c s v 点上字典写入,把文件对象传进去,再加上字段名,这个字段名的话就使用什么呢?使用这个字典里面的键就行了啊,使用这个字典里面的键就好了,然后做一个批量替换吧, 就留这个键就可以了,其他的话就不要了。 ok, 然后我们 csv write, 下面的话我们就写入表头点 hander, 在 这里的话我们就写入数据 reference 啊,就可以了,然后右键一运行,它就会把我们这个数据直接保存到什么呢?保存到这个 data 点 c, s, v 的 文件里面,看见没有?那 python 讲师,安庆,然后 python 算法工程师,对吧? 这些就是我们的所拿的一个数据信息。那么批量采集数据啊,也很简单啊,因为我们核心点在于什么呢?核心点是在于模拟人的行为吗?我们如何才能查看更多的数据呢?是做一个下滑啊,是下滑我们的页面,让它加载更多的一些数据内容出来, 所以我们只需要在构建一个循环,进行一个采集完一页之后的话,做一个下滑就可以了。那我们可以在这里啊构建一个循环翻页 for page in 我 们的 range, 比如说我们爬个前二十页,好吧,前二十页的数据, 那就到二十一嘛,然后我们做一个循环,然后我们再做一个下滑页面啊,下滑页面 d p 点上它点这个,这个话就下滑页面到底部啊,到底部的话它就会加载更多的内容。那加载更多的我们再获取更多的数据嘛, 这就很简单, printer 打印一下,正在采集几页的数据内容。嗯, 数据内容 ok, 运行 等他访问啊,然后你数据啊,那这样的话我们就可以做一个批量的一个操作了。 嗯,这里有一个数据报错了啊。对啊,有一个没有经纬度的啊,没有经纬度的 打做异常处理,跳过就行了,简单的话直接做异常就行了,因为它远程办公的话,你还得去。呃,那,那你得去判断一下啊,判断一下它有没有内容。就这个 gps 返回的是个嫩啊,返回是个嫩啊,就这个地方返回是个嫩,返回的是个空的,就没有内容。 所以我们简单来说的话就直接做一个异常,因为对于整不影响大局啊,不影响大局,但你也可以直接做判断。哎, 判断他有没有那个内容。对啊,他返回的是不是有数据的?如果说没有数据的话,那你就表示他是一个远程办公的,然后说有的话我们就就提取, 咱们这里面就提取有的,因为少数服从多数啊,那这样的话,我们前二十页的数据就裁下来了啊,按正常来说的话,我们一页是十五条,二十页的话应该是三百条数据啊,我们来看他一共是拿到多少条数据啊? 看一下。哎,怎么滑不到最下面 啊?一共是三百二百九十九,就相当于我们整个只有一条数据是有特殊性的。不就三百条里面只有一条啊,这个就不影响啊,不影响, 你实在想知道是哪一条的话,你可以在这个地方打印一下啊。在哪里?在这里啊,可以打印一下 ppt job, 那你就知道它是哪一条数据了。好,我再给大家运行看一下这个效果。呃,不知道它这里面会不会有啊? 那这一条 看见没有啊?资深啊,资深。 python。 它是没有那一个经纬度的,发现没有,它这里话是没有经纬度的, 那它这个是没有经纬度。它没有,没有给啊,没有给经纬度,咱们说一个 gps, 好 吧, gps 看没有,它返回是个嫩, 那这里啊也有一个 gps 返回是个嫩。所以说你要判断一下这里返回的是不是一个嫩,返回是个空的话啊,返回是个空的话,那就说明我们对吧?就没有那个经纬度啊,如果说它返回有的话就有, 对不对?那你要去判断的话,也可以啊,你在这个地方嘛,提取一下什么呢?这个经纬度啊, 那我们这里写一下 gps 等于它 啊,一副我们那个 gps 啊,不等于那啊,不等于那的话,我们就取哪一个呢?取它啊,就取它, 否则的话啊,否则的话干嘛呢?否的话就是个嫩啊,如果说他不等于嫩的话,就是如果等于嫩的话就就就直接返回嫩,那这边的话是同样的啊,同样的一个操作。 哎,这个好像我复制错了 啊,他应该是这个。 如果说我们的一个 gps 啊,不等于什么呢?不等于一个嫩,那说明就是有东西,有东西就取它,否则就是个空的,那这边是同样的一个操作。 对啊,你就判断它是不是有啊,有的话就有,没有的话就返回一个空的,这样的话就可以了啊,这样的话就 ok 了, 那这样的话你就可以把所有的数据全部拿到了,就三百条,你要要么做判断,要么做异常处理, 那这样的话我就可以拿到三百条数据,现在是不是就三百零一了? 所以这两种方式的话都可以啊,都可以,就是在乎于你对这条数据你是需要呢还是不需要,你不需要的话就直接异常跳过啊,你需要的话那你就去做判断处理。 对啊,这个话就是一个三元表达式啊,三元表达式啊,当这一个条件成立的时候,我们就取前面的啊,不成立的话就取后面的。 这是一个三元表达式啊,前面是一个条件成立的,成立的话我们就干嘛呢?就取它啊,条件成立啊,然后不成立的话就是哪一个呢?不成立的话就它 啊,所以我们这边的话,有 gps 的 话,应该它有一个嫩的返回的,有些是空的 呐,看没有。这里的话有两条数据就是空的,它没有经纬度的啊,这个的话就是关于嗯,这个 boss 的 采集啊,然后这边的话还准备了一个格式化的,但这格式化的话, 格式化的话还是不讲了吧,哈哈,给大家看下效果就行了。格式化的话给大家看下效果就好了 啊,这是整体的一个把我们的数据做一个简单的 excel 的 一个效果啊。

在使用拍三的 requests 库进行网络请求时,我们经常需要与不同的服务器进行通信,获取或发送数据。然而,有时候服务器可能会出现错误配置, 将本应使用 s s l c q s socket zero 的 u i 重定向到非 s s l 的 u i l 上。这个问题可能会导致敏感数据如密码或其他机密信息以明文形式发送到不安全的服务器上,而应用程序却毫不知情。为了保障数据的安全性,我们需要一种方法来防止这种非 s s l 重定向的发生。 解决方案为快时事库在处理 asttp 请求时提供了自动的重定向功能。这意味着当服务器返回重定向响应时, v q s 是会自动跟随重定向并完成请求。默认情况下, v q s 是会在重定向时删除所有请求体信息,八 d 以及亚瑟 c 渗透信息,以防止敏感数据在重定向过程中被 重新发送。这对于大多数情况下都是安全焊合理的。然而,对于非 ssl 重定向的问题,目前来说, vcrs 是库没有提供这么的参数选项来防止他们。这是因为有些情况下,服务器可能合理的需要将 ssl 重定向到仍然使用铭文服务的就内容。这种行为不应该被认为是一场情况。 虽然在当前版本的 request 库中没有直接的参数来防止肺癌在十二重定向,但是我们可以考虑以下解决方案和未来展望。 一、使用 request 的 sense 对象 request 使用了 sense 对象,他可以在多次请求之间保持一些状态信息,包括 gook h t p 头信息等。通过使用 sense 对象,我们可以在每次请求时手动处理重定向,从而控制是否允许非 ss l 重定向发生。