粉丝7345获赞3.8万

picasa 爬虫教程第五集 url 传餐当我们想要在浏览器中进入一个网页的时候,在地址栏中就会出现一串符号,我们习惯叫它网址,但是这并不准确,正确的说法,我们应该称它为 url。 那 么这个 url 到底是什么?如何在网络爬虫中正确地运用它呢?通常一个完整的 url 长这个样子,包含四个关键的部分,协议,域名 以及路径和可选的参数部分。在 u i l 中,最常见的协议就是 http 和 https。 网络爬虫通常也是通过 http 请求来开始工作的, 而网站中的域名就是网站中的门牌号,例如百度的三 w 点,百度点 com 告诉我们访问的是哪一个网站。 被于域名之后的路径就是访问的网页,它指定了服务器上资源的具体位置。第四部分就是参数,在 u r l 中动态传递信息的关键部分, 以问号开始,紧跟在路径的后面,把这个 and 符号去掉之后,参数部分就变成了这个样子。 在 url 中,参数采用键等于值的形式成对存在多组参数之间使用 i 的 符号连接。为什么 url 中有参数呢?现在我们就进入百度浏览器中一探究竟。 当我们进入到百度的首页的时候,会发现网址中仅仅有两个部分协议以及域名,并没有路径和参数,但是我们抓取的内容绝对不会止步于网站的首页中。当我们在搜索框中输入一个关键词,例如网易云, 然后按下回车键跳转,跳转到对应的页面中,你就会发现地址栏中的内容发生了变化, 出现了刚刚所说的四个元素, http 协议、域名以及路径和参数。 在网站中, url 的 参数并不是每一个都有用的,为了找到有效的参数,我们可以在浏览器中 删除掉一些看上去没有用的,例如这个 w d 等于网易云,网易云是这个网页的关键词,明显是有用的,我们把这个网易云后面的所有参数删除掉, 然后按下回车键,你会发现还是跳转到了网易云的页面中,说明后面的参数都是浏览器后面加上去的一些无关紧要的参数。那么这个关键词前面的参数又是否是有效参数呢?我们来一个一个的删除一下, 再次按下回车还是可以跳转到网易云页面,然后再次删除,这次我删除掉两个, 按下回车还是可以跳转到网易云页面。那如果我删除掉最前面的这一个 i e 等于 utf 杠八, 然后我点下回车键,大家可以看到在这个百度搜索框中,有用的参数仅仅只有这一个参数而已。如果我们在这个 w d 后面直接写上其他的关键词小龙虾, 按下回车,我们也可以进入到关键词为小龙虾的百度页面中。那么通过修改 url 中的参数,我们就可以达到抓取对应关键词的网页。那么现在我们来直接复制这串网页的网址, 还是复制网易云的。当我们直接复制这串网址,然后粘贴的时候,就会发现我们粘贴的内容发生了变化, 从中文的文字变成了一串我们并不认识的符号,这是为什么呢?因为 url 不 支持中文和特殊符号,浏览器会根据编码规则将它变成这串样子。 我们可以在浏览器中进入到开发者模式,进入到网络中,然后我们刷新一下这个页面,进行数据抓包。大家可以看到我们访问的这个网址 也是这样,一串关键词的部分也变成了经过浏览器编码规则而发生了改变的一串文字。 那么我们作为网络爬虫,为了能够更加接近浏览器发起的请求,我们也需要将这一串参数进行编码规则。不懂浏览器中的编码规则也不用担心,爬虫库中的 u r 利步可以帮助我们进行处理。 首先我们可以在代码中导入 urlib 库,并且引用其中的方法 quite 和 unquote。 假设关键词还是网易云,使用 urlib 中的 quite 方法就可以得到这一串文字,和浏览器中转化的一模一样。 想要将浏览器中转化后的变成文字,你也可以使用 unquiet 就 可以重新变成文字了。那么以上的内容你都会了吗?我们在 python 中练习一下吧。那么在正式发起请求之前,我们必须要导入一个库,就是 request 库,写上 import request, 这是我们发起请求关键的一部分。那么导入了库之后,我们来获取包含关键词的网页 url。 在浏览器中我们得到的网址是这个样子的,我们将它复制粘贴到这里,写上 url, 等于 这一串。如果我们想要获取任意对应关键词的网页,那么我们是不是应该对这个关键词进行一些修改。 比如说我使用一个 keyword 关键词,这个变量用来储存我想要抓取哪一个关键词,那么我们需要用户输入 请输入想要抓取的关键词,进行了输入之后,我们这后面这一节就要进行转移, 直接写上 keywords, 那 么我们获得的网页就是 print, 哎,我们打印一下这个 url, 比如说我想要抓取的网页是小龙虾,那么抓取的网页这一节后面就是不被认识的,我们点击进去可以看到并没有进入到对应的关键词页面, 如果我们想要抓取,那么就需要对它进行浏览器相同的编码,那么就需要导入一个库,就是 from, 写上 from u r 列表库中的 quiet 和 unquiet, 这里我们不需要使用了 quiet 的 方法,那么就只要写上 quiet, 写上 q u o t b 进行编码之后,我们再来打印一下这个网址,我们这次抓取,嗯,小笼包 进入到网址中可以看到,我们就可以进入到小笼包对应的页面中啦。那么我们想要将抓取的对应网页的内容保存下来, 就需要使用到写入文件的方法啦。首先发起请求,使用 response 保存抓取请求后的结果,发起 get 请求,向这个 url 发起请求。 同样我们还要写上 heaters, 来模拟为浏览器,在 heaters 里面写上 user agent, 这个 user agent 我 们可以在浏览器中找到开发者模式,然后找到网络,重新加载 好,点击到这里,在下面的请求标头之内,我们就可以找到这个 user agent, 大家记得要把这个 user agent 改变为字典模式,然后粘贴进来,在这里我们再写上 hitters, 写上 hitters 获得到了响应结果之后,我们再将抓取的内容写入到文件中,写入 with open, 写入一个新的文件, 文件名叫做百度,然后加上关键词,告诉我们抓取的是哪个页面,使用 w 模式,并且我们要将 encode 改为 utf 杠八。 那么写完之后,我们再来写上 f, 点 y, 写入到文件中,并写一下这个代码, 请输入想要抓取的关键词。我写一个螺蛳粉吧,螺蛳粉按下回车,在这里我多加了一个 s, 我 们把它删掉就可以了。再次运行这段代码, 还是抓取螺蛳粉,现在我们就得到了螺蛳粉的网页,点击进去,我们在浏览器中打开, 现在我们就抓取到了螺蛳粉网页的页面啦。总而言之, url 是 网络爬虫抓取批量数据的基石。通过这个视频,你有没有学习到 url 到底有些什么可以在评论区说出来,或者你有什么疑问也可以在评论区提出来哦。

python 从零开始学,今天要讲的是 url 传餐。当我们想要在浏览器中进入一个网页的时候,地址栏中就会出现一串符号, 我们习惯叫它网址,但这并不准确,正确的说法应该称它为 url。 那 么这个 url 到底是什么?如何在网络爬虫中正确地运用它呢?通常一个完整的 url 长这个样子,包含四个关键的部分,协议、域名、 路径以及可选的参数部分。在 u i l 中,最常见的协议就是 http 和 https。 网络爬虫通常也是通过 http 请求来开始工作的,而网站中的域名就是网站的门牌号, 例如百度的三 w 点,百度点 com 告诉我们访问的是哪一个网站。位于域名之后的路径就是访问的网页,它指定了服务器上资源的具体位置。 第四部分是参数,它是 url 中动态传递信息的关键部分,以问号开始,紧跟在路径的后面,把按的符号去掉之后,参数部分就变成了这个样子。 在 url 中,参数采用键等于值的形式成对存在多组参数之间使用按的符号连接。 为什么 ul 中会有参数呢?现在我们就进入百度浏览器中一探究竟。当我们进入到百度的首页时,会发现网址中仅仅有两个部分,协议和域名,并没有路径和参数, 但是我们抓取的内容绝对不会止步于网站的首页。当我们在搜索框中输入一个关键词,例如网易云, 然后按下回车键,跳转到对应的页面中,你就会发现地址栏中的内容发生了变化,出现了刚刚所说的四个元素, http 协议、域名、路径和参数。 在网站中, u l 的 参数并不是每一个都有用的,为了找到有效的参数,我们可以在浏览器中删除掉一些看上去没有用的参数,例如这个 w d。 网易云,网易云是这个网页的关键词,明显是有用的, 我们把这个网易云后面的所有参数删除掉,然后按下回车键,你会发现还是跳转到了网易云的页面中,说明后面的参数都是浏览器后面加上去的一些无关紧要的参数。 那么这个关键词前面的参数又是否是有效参数呢?我们来一个一个的删除一下,再次按下回车还是可以跳转到网易云页面再删除。这次我删除掉两个, 按下回车还是可以跳转到网易云页面。那如果我删除掉最后最前面的这一个 i e 等 u t f 杠八,然后我点一下回车键,大家可以看到在这个百度搜索框中,有用的参数仅仅只有这一个 w d 而已。 如果我们在这个 w d 后面直接写上其他的关键词,比如小龙虾,按下回车,我们也可以进入到关键词为小龙虾的百度页面中。 那么通过修改 url 中的参数,我们就可以达到抓取对应关键词网页的目的。现在我们来直接复制这串网页的网址,还是复制网易云的。 当我们直接复制这串网址,然后粘贴的时候,就会发现我们粘贴的内容发生了变化,从 中文的文字变成了一串我们并不认识的符号,这是为什么呢?因为 url 不 支持中文和特殊符号,浏览器会根据编码规则将它变成这串样子,我们可以在浏览器中进入到开发者模式,进入网络,然后我们刷新一下这个页面,进行数据抓包。 大家可以看到我们访问的这个网址也是这样,关键词的部分也变成了经过浏览器编码规则而发生改变的一串文字。那么作为网络爬虫,为了能够更加接近浏览器发起的请求,我们也需要将这一段参数进行编码。 不懂浏览器中的编码规则也不用担心,爬虫库中的 arlib 可以 帮助我们进行处理。首先我们可以在代码中导入 arlib 库, 并且引用其中的方法 quote 和 unquote。 假设关键词还是网易云,使用 url 中的 quote 方法就可以得到这一串文字,和浏览器中转化的一模一样。想要将浏览器中转化后的变成文字,你也可以使用 unquote 就 可以重新变成文字啦。 那么以上的内容你都会了吗?我们在派叉中练习一下吧。在正式发起请求之前,我们必须要导入一个库,就是 requests 库,写上 import requests, 这是我们发起请求最关键的一步。那么导入库之后,我们来获取包含关键词的网页 url。 在 浏览器中,我们得到的网易云网址是这个样子的,我们将它复制粘贴到这里, 写上 u i l, 等于这一串。如果我们想要获取任意对应关键词的网页,那么我们是不是应该对这个关键词进行一些修改?比如说我使用一个 keyword 的 变量用来储存我想要抓取的关键词,那么我们需要用户输入请输入想要抓取的关键词 进行了输入之后,我们后面这一节就要进行转译,直接写上 keyword, 那 么我们获得的网页就是 print, 我 们打印一下这个 u i l, 比如说我想要抓取的网页是小龙虾,那么抓取的网页这一节后面就是不被认识的,我们点击进去可以看到并没有进入到对应的关键词页面, 如果我们想要抓取,那么就需要对它进行浏览器相同的编码,那么就需要导入一个库,写上 from arduino 中的 quote 和 unquote, 在 这里我们不需要使用到 unquote 的 方法,那么就只要写上 quote, 进行编码之后,我们再来打印一下这个网址。我们这次抓取小笼包进入到网址中 可以看到,我们就可以进入到小笼包对应的页面中啦。那么我们想要将抓取到的对应网页的内容保存下来,就需要使用到写入文件的方法啦,在这里写上,首先发起请求,使用 response 保存抓取请求后的结果,发起 get 请求,向这个 u i l 发起请求。 同样我们还要写上 headers 来模拟为浏览器,在 headers 里面写上 user 杠 agent, 这个 user 杠 agent 我 们可以在浏览器中找到开发者模式,然后找到网络重新加载,然后点击到这里, 在下面的请求标头之内,我们就可以找到这个 user 杠 agent, 大家记得要把这个 user 杠 agent 改变为字典模式,然后粘贴进来,在这里我们再写上 headers。 写上 headers 之后呢,获得了响应结果之后,我们再将抓取的内容写入到文件中,写入 with open, 写入一个新的文件,文件名叫做百度,加上关键词,告诉我们抓取的是哪个页面,使用 w 模式,并且我们要将 encoding 改为 utf 杠八。 那么写完之后我们再来写上 f 点 right, 写入到文件中,运行一下这个代码,请输入想要抓取的关键词,我写一个螺蛳粉,按下回车,在这里我多加了一个 s, 我 们把它删掉就可以了。 再次运行这段代码,还是抓取螺蛳粉,现在我们就得到了螺蛳粉的网页,点击进去,我们在浏览器中打开, 现在我们就抓取到了螺蛳粉网页的页面了。总而言之, url 是 网络爬虫抓取批量数据的基石。通过这个视频,你有没有学习到 url 到底有些什么,可以在评论区说出来,或者你有什么疑问也可以在评论区提出来哦。

最近我在做 reddit 的 这个调研,上面结合我的 seo 效果非常好,稍微来分享一下吧。首先呢,我会在这个 reddit 平台找出一些不同的论坛,在这些论坛里面呢,去观察,我会选择 topic, 大 概有十个左右, 这十个的 topic 呢,我会开始调研它们的 keyword 输入到 a rough, a rough 再输出 excel, excel 再输出给 clop, 再给我分析,分析完呢,就可以构建出我新的板块的 block 计划。 通过这些 blog 的 计划呢,我就开始在构建我的支柱页,提前呢,我会把这个支柱页的这个 url 准备好,以防我未来要做文章。当我在写这种不同的 blog 的 时候呢,我会在内练回我的支柱页, 这样子呢,就是一个 reddit 的 循环,就把整个的 reddit 的 内容全部给运用上到这个的 circle, 如果你能全部卷明白的话呢,其实你的内容滚得会很快,因为 ai 也很喜欢推荐你,因为你刚好写的内容就能解决到 reddit 用户的痛点了。

小牛啊,你这个图片的 url 是 绝对入境还是相对入境啊?哦,这个呀,等等拉个会对齐下颗粒度 不是哥们你就告诉我是相对入境还是绝对入境就好了呀。公司有规定,口头表达没有记录,万一出事谁的锅。嘿,你看,拉个会就有会议记录了。 什么时候开会呢?我今天没空,等下周吧。那你直接说啊,觉得路径还相对路径,口头说没有记录啊。好好好,你忙你忙,我自己过去看代码。看谁的代码。你的啊,看我的代码要走权限。然后呢?要拉个会奖。

q and code 别拿普通 sk 硬接, sk 和 sksp 真的 别再混用了,先改 settings 下面三块配置,第一块先看入口和地址, id 和 base url 也一起在同一块里。 第二块直接填 env 变量,就把 sksp 那 串放进这个变量里。第三块别露认证和模型, select type 就 填 open ai 最容易错的是旧 base ur 三处不配套接口,很容易报错。完整版在置顶关注我,每天一个 ai 实用技巧。

将 cloud 吉祥物换成绿色。好,已经成功了。远程 web coding 的 终极解决方案。这是我刚刚 web coding 的 一个动画,这期我不会讲,就是怎么样 web coding 出动画,我主要是讲, 嗯,就是这个是怎么实现的?你看这都是移动设备,而且它可以在任意网络。它并不,它并不需要局域网。然后这个看上去是 vs code 的, 对吧?它也确实是 vsco 的, 只不过这其实是浏览器,但它看上去像是一个 app, 是 因为这是用了。呃,苹果的 pwa 的 技术,然后你其实并不需要装任何的 app 就 可以完成这样的。呃,只需要你在你的电脑上啊,只需要你在电脑上装了 vsco 的 就行了。 这边我把它切换成一个,就是切换成这个就是快一点的模型,因为这个,哎呀,切换成漏了。但,但它可能很快,但是它不知道能不能完成任务。直接演示一下,因为我这里是连的是五 g, 它并不依赖于局网。我刚刚说了。 然后呢?我现在啊,进入 iphone 的 语音模式,因为打字比较麻烦,我拿着另外一个手机在录语音模式。呃,语音模式?将 cloud 的 吉祥物 换成绿色 命令模式,好,这样它就不会再听写了。就是我后面就不会在这个打字了。 好,然后已经在开始这个工作了。然后这个呢?其实也是网页。呃,他的服务器。网页,我们需要服务器嘛?这个服务器其实运行在我家里的电脑上,虽然我现在在家里,但是我明天要出差,我会带这个 ipad 和我自己的手机,这样就可以实现了,因为他其实并不一啊,已经成功了, 已经变成绿色了。然后呢,它其实所有的更改都是发生在我的电脑上的,但是同样的它并不许它可以,我就是我出差的时候可以这边连热点,虽然我 ipad 现在连的是 wifi, 但其实它可以连热点,因为我手机是连的是五 g。 然后这个是也是 vs code 自带的功能,这个也是 vs code 自带的功能。就是我后面会出一期详细的教程,但是如果你现在就想体验的话,这个叫做远程隧道, 就本质上它是通过 github 账户连接的,因为 github 被微软收购了。然后现在这个 vs code 的 也是微软推出的。然后这个呢叫做端口转发。实际上它的这个服务我说了是运行在电脑上 啊,但是你设置的端口转发就可以。然后这个不需要安装任何的这个软件就可以实现。然后这是我家的猫。然后啊,我是猫学长,我们下期再见。

我发现这个 q 代码真的有点离谱了,当一条路行不通的时候,他会创造出第二条路来帮你解决问题。怎么说呢?比如说我的这个这个云函数,他要被 u r l 化,被 u r l 化的前提是先要被域名绑定,你不用懂的什么意思,反正就是这个域名一直绑定不上去,旁边没有绑定的按钮。那么你看 q 代码怎么做 的?他直接说我直接绕过了控制台, u i 在 本地配置好了,直接帮我配置好了。你看, 本来我这下面是一直在报错的,就是这个 u r i 电话一直在报错,他直接把它给绕过去了,直接帮我直接配置好。哇,太夸张了。

面试官问,从输入网址到网页显示,这中间到底发生了什么?这题考点非常多,很多人要么说不全,要么说着说着开始虚了,相对而言还是有点难度。今天我用两分钟教你一套。面试官,听完就知道你是真的懂网络的高峰打法。我们从敲下回车那一刻开始。第一步,浏览器解析,你的输入网址用的是什么协议?是 http 还是 atbs? 域名是什么?路径是什么?这一层属于应用层, 那先点进去就够。接下来关键的一步来了, dns 解析,浏览器要先知道服务器在哪,对吧?那他不会一上来就问 dns 服务器,而是先查浏览器缓存系统缓存,没有再去本地 dns 服务器,本地 dns 再把你一路问到权威 dns, 那 最终把域名换成 ip。 拿到 ip 之后,浏览器能直接开始发业务数据吗?不行, 他得先跟服务器确认关系,也就是 t t p 三次握手,建立一条可靠连接。如果是 h t p s, 还要多一轮 t l s 握手,协商加密算法和密钥,防止数据在路上被偷看、被篡改。这里的 h t p s 是 明显的加分点,一定要提一下,连接建立好之后,浏览器才开始真正发请求,那 它会把请求内容组装成一个 a t t 报文,但注意,这时候它也只是应用层,数据还出不了门。接下来是整道题的灵魂协议站分专,本质上就是一层一层贴快递单。 a t p 数据,先加 t t p 头标端口序号,保证可靠传输,再加 ip 头,写清楚从哪来到哪去,再加 mac 头,负责在当前网络把包送出去。那么问题来了,这个 mac 地址是哪来的? 答案是 a r p。 也就是用 ip 地址去问下一条设备的 mac 地址。那这个点你一说,面试官就知道,你不是只会背流程。数据分装完之后交给网卡,被转化成电信号或者光信号,真正上路到了局网交换机出厂,那他不看 ip, 只看 mac, 负责把数据转发到正确的端口。出了局域网,轮到路由器工作,路由器只看 ip, 决定吓一跳往哪走。每过一个路由器, t t l。 简易房主数据包在网络里无限兜圈子,这一句也属于加分享。提一嘴,数据包一路转发,终于到达服务器。服务器这边流程正好反过来,一层层拆包,去掉 mac 头、 ip 头、 t c p 头,最后把 a p p 请求交给 web 服务 服务端处理。又有逻辑可能查数据库,调接口生成响应数据。但同样的分端流程,把响应原路返回浏览器收到响应之后,事情还没完。如果是 html, 就 开始解析 dom, 加载 css, 执行 js。 如果是接口数据,就交给前端框架去渲染。 所以页面慢不一定是后端慢,也可能是慢在 d n s 网络或者前端渲染。最后一句话收尾,从输入 u r o 到页面展示,本质就是一次应用层发起协议栈,层层封装网络转发服务器解封装,再原路返回并完成渲染的过程。 不同岗位面试官关注点不同,但你能把这条主线讲清楚,这道题基本就是高分答案。这是计算机网络面试系列的第九期,完整的文字版和配图我已经整理到了,面试呀,方便你反复消化。如果觉得有用,关注我,拿下面试,我们下期见。

今天学习的是文件下载漏洞很多,刚学的兄弟很容易把他和之前学习的文件包含漏洞搞毁,我一开始也是非常的懵,用大白话说,文件包含是让服务器去执行文件, 而文件下载是让服务器把文件原封不动的发给你。网站本来只是让你下载指定的文件,但是没有做路径限制,你只需要在 url 里面去 改一些参数,比如说改一下需要下载的文件名,就能下载服务器上的任何东西,小到配置文件数据库密码,大到整个网站的原码都能直接给你发下来。我今天踩了个大坑,一开始直接输入绝对路径此 下载不下来,后来才知道需要用点点斜杠一层一层的往上跳目录,试了几次才成功拿到他说我的文件。今天学习文件下载漏洞打卡完成,外部漏洞一个一个的去坑,慢慢的就入门了。你们学习的时候都踩过什么坑?欢迎来评论区聊一聊!

学校不教,但你要会的开发技巧!大学生创业第二十四天,今天聊一个大场面是必考!但新手全站接单最容易贵的致命安全坑,水平越全!在学校写客社查订单或者看用户详情,大家是不是图省事, 直接在 u i o r 里传自尊 id? 比如前端发请求 id 等于幺零零幺,后端收到一千零一,就老老实实去数据库查出来,返回本地测起来毫无问题。可项目一旦上线,只要懂一点点抓包的人,登录自己的账号后,把幺零零幺随意改成一零零二、一千零三, 就能在不需要任何密码的情况下,像看连环画一样,把全网所有用户的信息曝光。一旦发生大面积隐私泄露, 你不仅收不到尾款,严重了还要承担法律责任。商业项目的标准保命打法,永远不要盲目信任 前端传过来的业务 id, 后端查询任何敏感数据,必须双屏校验。第一步,从加密的 j w t token 理解析出当前登录用户的真实 user id。 第二步,写查询语句时,把用户身份死死锁住。维尔 id 等于订单 id and user underscore id equals。 前用户 id 如果对不上,直接拦截并记录异常等安全防线,才叫商业级全站。我是边上课边接单的大学生,快去检查你的详情接口吧!