鱼C论坛

 找回密码
 立即注册
查看: 3944|回复: 11

[已解决]爬虫学习问题

[复制链接]
发表于 2022-12-7 22:32:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
由于等级不够,不能发图片,所以我就文件描述我的问题了。
问题如下:
观看第一版python爬虫学习的”P55 论一只爬虫的自我修养2:实战“中的9分34秒,小甲鱼获取有道翻译的preview那里,翻译结果是一个列表的形式存储。
但是我在实践时(2022.12.7),有道翻译的preview部分中显示的是字符串(在有道翻译的网站上是字符串,在IDLE中输出也是字符串,而且我用type()验证了也是str的结果。)
问:如何提取上述提到的字符串的含义,让其转化成翻译结果呢?(我也不知道这样问对不对,但是我能想到的就这,刚开始学习python,大佬勿怪)
还有一点就是:
我发现:
2022.12.7的有道翻译网页上,form data的里面有i(对应的是用户输入的待翻译的内容,这个我知道),但是下面还有sign(这个好像是会随着i的变化而变化),是不是说明要获取sign与i的对应关系才能写爬虫(如果是按照”P55 论一只爬虫的自我修养2:实战”的思路)。
最佳答案
2022-12-7 23:56:50
preview的问题可以看下这篇文章:https://fishc.com.cn/forum.php?m ... p;highlight=preview
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-12-7 23:33:53 | 显示全部楼层
发一下你的代码吧,一起看一下。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-7 23:56:50 | 显示全部楼层    本楼为最佳答案   
preview的问题可以看下这篇文章:https://fishc.com.cn/forum.php?m ... p;highlight=preview
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-8 08:22:13 | 显示全部楼层
代码如下:

import urllib.request
import urllib.parse
#import json

content = input('请输入待翻译的内容:')
“reversed(lru)”‘=’'这个就是有道翻译的url''上传的时候说我没有上传url的权限,所以我就在前面改了一下,这一句是正常的'


data={}
data['i']='不好'
data['from']='auto'
data['to']=' ' 
data['dictResult']='true'
data['keyid']='webfanyi'
data['sign']='89e97c6896499a9841da29cb037b669a'
data['client']='fanyideskweb'
data['product']='webfanyi'
data['appVersion']='1.0.0'
data['vendor']='web'
data['pointParam']='client,mysticTime,product'
data['mysticTime']='1670417887297'
data['keyfrom']='fanyi.web'
data=urllib.parse.urlencode(data).encode('utf-8')


req = urllib.request.Request(url,data)
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36 Core/1.94.175.400 QQBrowser/11.1.5155.400')

response = urllib.request.urlopen(req)

html = response.read().decode('utf-8')

#target = json.loads(html)
#target = target['translateResult'][0][0]['tgt']


print(html)

输出结果如下:
请输入待翻译的内容:你好
eh6zVNeFZ0TD1ei8mSABcQ==

请输入待翻译的内容:吃饭了吗
eh6zVNeFZ0TD1ei8mSABcQ==

输出结果一样是因为data[sign]是没有改变的吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-8 09:11:19 | 显示全部楼层
import urllib.request
import urllib.parse
#import json

content = input('请输入待翻译的内容:')
“reversed(lru)”‘=’'这个就是有道翻译的url''上传的时候说我没有上传url的权限,所以我就在前面改了一下,这一句是正常的'


data={}
data['i']='不好'
data['from']='auto'
data['to']=' ' 
data['dictResult']='true'
data['keyid']='webfanyi'
data['sign']='89e97c6896499a9841da29cb037b669a'
data['client']='fanyideskweb'
data['product']='webfanyi'
data['appVersion']='1.0.0'
data['vendor']='web'
data['pointParam']='client,mysticTime,product'
data['mysticTime']='1670417887297'
data['keyfrom']='fanyi.web'
data=urllib.parse.urlencode(data).encode('utf-8')


req = urllib.request.Request(url,data)
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36 Core/1.94.175.400 QQBrowser/11.1.5155.400')

response = urllib.request.urlopen(req)

html = response.read().decode('utf-8')

#target = json.loads(html)
#target = target['translateResult'][0][0]['tgt']


print(html)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-8 09:59:26 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-8 10:40:08 | 显示全部楼层
url发一下啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-8 10:57:23 | 显示全部楼层

##https
://dict.youdao.com/webtranslate###[/url]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-8 10:58:08 | 显示全部楼层
奇恒之腑 发表于 2022-12-8 10:57
##https
://dict.youdao.com/webtranslate###[/url]

就上面的加上下面的,没有##,论坛说我没有权限发url
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-9 09:04:07 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-9 22:27:10 | 显示全部楼层
输出结果一样是因为data['i']一直等于‘不好’
应该是data['i']=content
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-10 08:51:55 | 显示全部楼层
我疑惑的地方在这里:
那个知乎链接里面的internet操作我会,但是现在的有道翻译preview那里已经不是可以明显看出翻译内容的字典了,而是一行长的代码(如下)。
Z21kD9ZK1ke6ugku2ccWu4n6eLnvoDT0YgGi0y3g-v0B9sYqg8L9D6UERNozYOHqnYdl2efZNyM6Trc_xS-zKtfTK4hb6JP8XwCzNh0avc8qItQUiIU_4wKKXJlIpvMvfKvJaaZzaX6VEtpkr2FdkfoT_Jgbm2GRSVj3r40autIdlImENG8hC0ZH4ww7utwuTt3Oo_ZpXg0BSq9wePSAB75-ChkiGKF9HTIPeCl2bl84SBD1XDfFCZpkKQhecYSs0JLoXOqP2ltavxRrg58Hp1q5uIgZZ_Oo2-Jmd-t1r4es40drcAq5bjmS62M2VJF8D6ojtOh9JTfNwgzD3CxYn-Pd7-TgHMyNEJEkFXTAyxzpjlFqtrCYDE3SZUYlENkqsL8Wrra1hM-1n TfiB-BLcWAdRBynNpP5_54aq_-GBsq8bB_9yEX5ovzDB4_Ry_spVVuUnb39iplMHCdCnjOD3ngiIDbl9SUz-9n pjBX05ZYRdPmFPAl424qdoaxeVqnVoH8jQFPZVqaHMzu4mJg0SICDWFH7GP1zqGRbXd3ESjT_iBInl3gICt2XVuhh_nubcELkTEC6xbqEDRQkPUNMpzXJHjcvsLHtcmSW0S9F0445ho9kT2qZYdMBC3Fs0OaHpUtFu77gZpQn7sGiqh8VliXIcUtfvvop-1 c-Vu5QjfUbLn2-s5POR9fGYG6rt6ioe_PGmwWj-Cc00zUM7FybfarKTr4D3Rk57R72qpXN4Ja86ZsCAMmDG-m5z31RQh_V7echJ8Kna3Go3yWKCK4vtSwOWrFhiS5RTz6EkrGc3SkFKbb5vp8Wop_84myBtgnBmj4CczhTq2HcOxrJf4def6yDt2uBxyv4bTVGx9Yx3uB4Gx0iK5kYvfma6B_LnkRWk331wjuXKQtBGYIuWkR8J5QtvBmIRVaa7AA19Z4xMIEAqbcuQ5p4I9FCElthBrJd9YOcouHK4U27xxYWJJXcJoTvzG7zWtiV76fHDeQLgAWvJJ7ww4NFgjhqc6AKA_2afxa4c_lAvVZgFuKL3XSCL7PfKxp6GhjcGKeSRr80PT1gfFw2xi8X4ejjNm_prsUZ

这个代码看不出来那里是要翻译的结果和内容,不像之前是字典,很明显里面就包含着你想翻译的内容,比如说想翻译你好,在网页输入‘你好’后,之前的preview会显示含有‘你好’的字典。现在没有,只有上面那个长代码。
这才是我疑惑的地方,怎么找到像翻译的内容在那里?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-25 09:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表