一起学爬虫(Python) — 14

一起学爬虫(Python) — 19 年轻人,进来学自动化
注:本篇不严谨,可以直接看15

前言

点赞!
在这里插入图片描述

真·前言

之前咱们不是爬了一个小小的翻译网站嘛,但是呢,也不知道是那个网站配置太一般了,还是各位太猛了,让那个网站真的受不了,于是乎好像就崩溃了的说,所以今天啊,我们就教大家进行有道翻译的爬取,这可能是一个小boss吧,所以大家要认真看认真学哦!!!

对了,提前下载好火狐浏览器~

知己知彼

首先呢,我们要先打开这个有道翻译啊,大家不要找错了,小泽就差点找错了,直接把网址带上好了:

http://fanyi.youdao.com/

在这里插入图片描述
相比昨天的绿色,今天的红色真的是十分可爱呢,快让我们开始愉快的学习吧!

首先,打开我们的F12、检查、开发者工具,然后点到Network里面。

接着,点击翻译按钮。

在这里插入图片描述
在这里插入图片描述
大家多翻译几次,就能观察到有一些参数我们是可以直接知道的,比如:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
还有三个参数呢,是会随机变动的:

在这里插入图片描述
但是我们就会发现,其实这个lts就是salt减去了一个数,或者说salt就是lts加了一个随机数,这里因为小泽见的多了,所以能直接看出来这个东西他不是人,他是一个时间戳,时间戳,时间戳,什么是时间戳???

在这里插入图片描述
在这里插入图片描述
各位各位各位,看到没有看到没有看到没有!!!

在这里插入图片描述
在这里插入图片描述
很像了吧!

但是到底是不是呢,还是要我们深入的研究一下才知道,毕竟现在只是一种猜测~

在这里插入图片描述
这个,才是我们的最终目的!

对了,还有记得看一下返回的数据,是不是我们要的数据~

在这里插入图片描述
确定无误!

火狐的初次登场

可能很多小伙伴都没有下载火狐哈,之前我们一直在用的都是360极速浏览器!

咳咳,应该要用谷歌的,不过谷歌实在是太慢啦!!!

但是今天,我们就要拿下火狐的第一次,一针见血!

为什么要用火狐呢?

答案是…因为火狐的抓包工具中,可以很便携的让我们看到某事件绑定的函数代码!!!

如果你已经开始听不懂了,说明你的前端学的不咋地,或者没有接触,不过没关系,先硬啃,我们一步一步来~

打开火狐

在这里插入图片描述
用火狐打开我们的有道翻译,然后右键点击检察元素,同样的用我们的金手指,点击翻译这个按钮~

在这里插入图片描述
在这里插入图片描述
会发现,这一行后面跟了一个我们没有见过的东西,这个就是这个按钮上的超链接标签绑定的事件!

打开它,看到那个click了嘛,click是点击的意思哦,就是说只要点击它,就会触发那个事件~

在这里插入图片描述
点击这里~

在这里插入图片描述
这个,就是绑定的函数代码!

看不懂吧,看不懂没关系,先知道就好。

在这里插入图片描述
然后我们点开它~

在这里插入图片描述
然后你就发现这里有超级超级长的一行代码…根本看不懂!

这里就要用到我们的js代码格式化网站啦:

https://tool.oschina.net/codeformat/js/

打开它,然后把所有的代码复制粘贴进去:

在这里插入图片描述
果然很长!

在这里插入图片描述
把这么长的一段代码复制到我们的记事本里,准备分析!

那么…要怎么分析呢?

首先各位跟着小泽一起蹲坑,不是一起捋一捋思路:

我先问宁一个问题,我们点击这个按钮的时候,是不是会执行一个函数事件?

对啊。

那执行了这个函数事件是不是就会向服务器发送一串数据,里面有我们要翻译的东西,还有那些奇奇怪怪的参数。

对啊。

那也就是说这个函数事件里面,会把那些参数都封装好,然后再发送给服务器,对吧。

对啊。

现在我们已经找到了这个函数事件诶,扒光光了的那种。

啊这…

在这里插入图片描述
那么我们是不是就可以在这个函数里面找到我们的参数呢???

在这里插入图片描述
就是这些 东东 啊!!!

不要跟我说你听迷糊了,这么简单易懂的呢,如果你真的听不懂的话…那就把听不懂发在评论里吧。

所以我们要去我们整理好然后又复制好的那一大串代码里去找这几个单词,懂了吗!!!

因为那一大串函数就是发送数据的,里面肯定会有这些单词,如果没有的话,你来打我,我给你打!

咳咳,分析完成了哈,接下来教大家怎么去找~

海底捞针

俗话说女人是水多的,我们要在这么大的一片数据里找到我们要的东西,就像在水里游泳一样,如果很大那就会很有感觉,一下就找到了,但是如果你的很小就没办法啦,慢慢找吧。

在这里插入图片描述
这里建议大家直接搜索这个url,为什么呢?

因为这个函数事件肯定要指定这个url,才会对这个url发起请求吧,没毛病吧~

在这里插入图片描述
不要把全部的url都加进去了诶,因为他们自己家人发送请求,没必要还要每次都带上http那些的,就跟你自己加载美女图片只需要 ./美女图片.jpg 就可以了一样。

这个呢,是前端写法的请求方式,不要在意那么多~

看到红框框了嘛:data: e,

那我们就继续搜索data,在这个位置搜索的话,是可以搜这附近的data的,至于往上还是往下搜,当然是往上拉,小笨蛋。

在这里插入图片描述
你可以选择点击向上的那个简单,当然如果你有键盘的话就按键盘上的向上的那个箭头~

一直找,直到找到看起来有用的数据!

在这里插入图片描述
可以看到又看到这个data了哈,不要管,不是我们要的东西!

在这里插入图片描述
掌声,花花~

有直播内味了吧,hh

我们成功找到了这个data封装的数据哈,可以看一看都对应了什么东西!

在这里插入图片描述
第一行的i呢,不用说肯定是我们要翻译的那个东西,就是我们输入的文本。

在这里插入图片描述
没用,为什么呢:
在这里插入图片描述
因为根本就没有嘛~

在这里插入图片描述
木大木大

在这里插入图片描述
可以看到啊,基本都是没用的,然后再仔细一看…

在这里插入图片描述
纳尼(ÒωÓױ)!

打扰了,我们继续往上找吧…

在这里插入图片描述
好的,现在找到一条看起来比较肥胖的,但是仔细一看好像还是没有什么有用的信息呢…因为我们没有学过前端的话,肯定是看不懂这些东西的嘛,那就说明data不行,我们得换一个搜索目标!

在这里插入图片描述

就用她吧!

在这里插入图片描述
苍天不负有心人,终于让我们找到了!!

直接把这个字典复制到我们的py文件中,然后整理一下…

在这里插入图片描述
咳咳,大概就是这样子啊…

看到那个action了吗,右边有个||,这个||的意思呢就是或的意思,就是说我们在e和另外一个选一个就ok了,那我们肯定选择现成的啊!

在这里插入图片描述
整理好了之后,上面画黑道道的我们都可以自己解决,对吧,第一个就是要翻译的内容嘛,第二个和第三个我们写成AUTO好了。

现在我们可以有目的的定点去找我们的client!

在这里插入图片描述

然后再找salt!

在这里插入图片描述
不找不要紧,一找吓一跳,直接连带着找到了sign还有bv!

果不其然,salt就是时间戳加上了一个随机数,而不是再乘十,还有一个md5加密,这个我们可以用python中的hashlib模块实现!!

这里是加密成16进制了,至于为什么,懂得人上下翻翻就能看到很多很长的一串一串的,不懂的话…百度吧~ 或者花时间去学前端!

e = input('你要翻译啥:')
# 时间戳
r = int(time.time() * 1000)
i = str(int(time.time() * 1000) + random.randint(1, 10))
# md5.digest()      返回的是二进制
# md5.hexdigest()   返回的是十六进制
sign = hashlib.md5(("fanyideskweb" + e + i + "Tbh5E8=q6U3EXe+&L[4c@").encode('utf-8')).hexdigest()

也就是说我们可以通过这种方法获得sign这个动态并且加密的值!

data = {
    'i': e,
    'from': 'AUTO',
    'to': 'AUTO',
    'smartresult': "dict",
    'client': "fanyideskweb",
    'salt': i,
    'sign': sign,
    'lts': r,
    'doctype': "json",
    'version': "2.1",
    'keyfrom': "fanyi.web",
    'action': "FY_BY_DEFAULT"
}

至于其他的详细内容,小泽就不一一带大家找了,慢慢百度然后自己加备注,这样更有利于自己进步!

这也是为了你们好,望理解!!!

当然,如果很想了解的很清楚很明白的话,多百度,自学前端,或者加入我们的交流群一起交流!!!

没有广告,没有男的,全都是女的!

在这里插入图片描述

最后的最后

当然上面还有一个点没跟大家说到,那就是我为什么把在这里插入图片描述
这个参数给去掉了,那是因为我在函数事件中发现这个东西是调用的另外一个文件,也就是说是可有可无的,因为它会自动去调用,然后自动去生成,是不需要我们的任何数据的,就不加辣~

点赞!点赞!点赞!

在这里插入图片描述

猜猜我是谁

没错,在这里呢,就把所有代码都附上,如果可以的话还是希望你能自己多思考思考,多找一找,多百度百度,这种东西不同的人有不同的理解,希望大家都能学会爬自己喜欢的美女的图片!

import time
import random
import hashlib
import requests
headers = {
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'
}
e = input('你要翻译啥:')
# 时间戳
r = int(time.time() * 1000)
i = str(int(time.time() * 1000) + random.randint(1, 10))
url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
# md5加密
# md5.digest()      返回的是二进制
# md5.hexdigest()   返回的是十六进制
sign = hashlib.md5(("fanyideskweb" + e + i + "Tbh5E8=q6U3EXe+&L[4c@").encode('utf-8')).hexdigest()
data = {
    'i': e,
    'from': 'AUTO',
    'to': 'AUTO',
    'smartresult': "dict",
    'client': "fanyideskweb",
    'salt': i,
    'sign': sign,
    'lts': r,
    'doctype': "json",
    'version': "2.1",
    'keyfrom': "fanyi.web",
    'action': "FY_BY_DEFAULT"
}
# 因为是json格式的嘛,所以json()一下
response = requests.post(url,data=data,headers=headers).json()
# 如果不懂为什么要这样子,可以直接print(response)
print(response['translateResult'][0][0]['tgt'])

接下来,炕头c加炕头v吧!

当然,也会有细心的小伙伴会发现上面有很多错误,比如url,和我们原本找的不同,还有参数里面最麻烦的那个其实不用加入也可以获得翻译的结果,还有就是那个参数的加密就是错的,这里是因为小泽对前端的知识呢也不算太精通,看的迷迷糊糊的,但是能自己捣鼓出来,让我说的话还真说不清楚,所以大家也不要太刁钻,思路就是这么个思路,先将就一下,等之后再详细的跟大家说一说js相关的知识点,然后今天的一切疑问,就会迎刃而解!

拜拜喽

  • 37
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Python爬虫可以通过以下步骤: 1. 首先要Python基础语法和常用库,如数据类型、循环、函数、文件读写等。 2. Python爬虫框架,如Scrapy、BeautifulSoup、requests等。 3. 通过练习实战项目来熟悉爬虫的实际应用,如爬取网页内容、提取信息、存储数据等。 4. 爬虫的相关知识,如网络协议、数据清洗、数据分析等。 可以通过在线课程、书籍、视频教程等方式习,也可以加入爬虫爱好者群体,和大家一起交流习。 ### 回答2: Python爬虫的首要步骤是了解Python编程语言和基本的编程概念。如果你对Python已经有一些基础知识,那么可以直接开始爬虫。以下是一些Python爬虫的方法和步骤: 1. 找到适合初者的Python爬虫教程,例如Coursera、Udemy或YouTube上的在线视频教程。这些教程经常包含基础知识和实践项目。 2. Python的基本语法和数据结构。了解如何使用变量、条件语句、循环和函数等基本概念。 3. Python的网络库和爬虫框架,例如Requests、BeautifulSoup和Scrapy等。这些库和框架可以帮助你解析HTML、发送HTTP请求和处理数据。 4. 阅读相关的爬虫文档和教程,理解HTML、CSS和JavaScript等基础知识。这将有助于你理解网页的结构和内容。 5. 开始编写简单的爬虫程序,涉及基本的网页请求和数据提取。例如,编写一个程序来抓取一个网页的标题或图片链接。 6. 阅读和分析其他人编写的爬虫代码。GitHub是一个很好的资源,可以找到许多开源的爬虫项目。 7. 不断练习和挑战自己,尝试一些更复杂的爬虫任务,例如爬取动态网页、模拟登录和数据清洗等。 8. 参加相关的社区和论坛,与其他爬虫程序员交流和习。他们可以提供宝贵的经验和解决方案。 9. 保持对新技术和工具的关注,如机器习和自然语言处理。这些技术可以帮助你更高效地处理和分析爬取的数据。 10. 最重要的是坚持不懈。Python爬虫是一个不断探索和习的过程,只有不断实践和积累经验才能掌握这个技能。 ### 回答3: Python爬虫可以按照以下步骤进行: 1. 掌握Python基础知识:了解Python的语法、数据类型、循环、条件判断等基本知识,并熟悉常用的Python内置函数和标准库。 2. 习HTTP协议和网页基础知识:了解HTTP请求和响应的基本原理,理解网页的结构和常用的HTML标签,掌握获取网页内容的方法。 3. 习相关库和框架:掌握一些必备的Python库和框架,如 requests、Beautiful Soup、Scrapy等,这些工具能够帮助我们发送HTTP请求、解析网页内容并提取有用的信息。 4. 习正则表达式:正则表达式是一种强大的文本匹配工具,对于爬虫来说非常有用。习正则表达式的语法和常用的匹配规则,能够方便地从网页中提取所需的数据。 5. 爬虫实践:选择一个合适的目标网站开始实践爬虫操作。首先分析目标网站的网页结构,确定需要爬取的内容和所需的请求方式。然后编写代码,使用相应的库和工具发送请求、解析网页并提取数据,最后将数据保存到指定的位置。 6. 不断习和提升:爬虫领域发展迅速,新的爬虫技术和工具不断涌现。要不断习新的知识,掌握新的技术和工具,提升自己的爬虫水平。 在习的过程中,可以参考相关的书籍、教程和在线文档,也可以参加相关的培训或者线上课程。此外,多练习,动手实践是提高爬虫能力的关键,通过不断的实践和实际项目的经验积累,才能够真正掌握Python爬虫的技巧和方法。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值