请问为什么 find 函数无法找到正确的匹配

请问为什么这里找不到正确的匹配
代码:

import requests, bs4
print('\n欢迎使用python翻译器,python翻译器支持任何您能想象到的语言,都能翻译成中文,甚者连古文也可以,分隔单词请用%20')
a=input('\n请输入翻译内容:') 
b='https://translate.google.cn/#view=home&op=translate&sl=auto&tl=zh-CN&text={}'.format(a)
res = requests.get(b)
novel = res.text
bs = bs4.BeautifulSoup(res.text, 'html.parser')
w = bs.find(class_="tlid-translation translation").text
print(w)

谢谢大家的帮忙!
思路:
我认为是 find 函数错了,我不知道这里应该放什么参数才能找到链接在下方
google 翻译

最佳答案
代码已被折叠,点此展开
5年前 评论
讨论数量: 8

卧槽,你会 requests 了?

5年前 评论
Jason990420

这网页不是简单的 requests.get 就能爬下来的,你没爬到正确的网页內容.

错误的内容

<body> <script>(function(){ ...

正确的内容

<body class="displaying-homepage show-result"> <script>(function(){ ...

所以找不到 tlid-translation translation, 也就没有翻译的结果

別怪 find 函数,它是无辜的.

5年前 评论
Coolest 5年前
Coolest 5年前
Jason990420

很难...

  1. 主要内容大都是由 js 传回,再建立网页 HTML 内容,和一般爬虫所对应的 HTML 不同,所以变得很复杂.
  2. google 本身很注重它的智慧财产权,它会利用一些方法来确认是网页还是爬虫,比如请求的内容涵盖的范围,比如请求与响应之间的授权,加密等等.
  3. 一旦它认为不是正常网页存取,会封锁中断连线.
  4. 还有存取量上也有所限制,太多了,也会封锁中断连线. 所以一般都是采用 google 的 api, 免费的也会有限制.
5年前 评论

我有一个运用 google 翻译的代码段

5年前 评论
Jason990420

贴上来看看啊

5年前 评论
代码已被折叠,点此展开
5年前 评论

很有思路

5年前 评论
Jason990420

嗯,原来以为是旧的 google 翻译,确实可行

5年前 评论