鱼C论坛

 找回密码
 立即注册
查看: 2629|回复: 12

[已解决]python 爬虫报错

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

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

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

x
  1. import urllib.request
  2. import urllib.parse
  3. url ='https://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
  4. data = {}
  5. data['i']= 'I love FishC!'
  6. data['from'] = 'AUTO'
  7. data['to']= 'AUTO'
  8. data['smartresult'] = 'dict'
  9. data['client'] = 'fanyideskweb'
  10. data['salt'] = '16580356408559'
  11. data['sign'] = '3a1d2d9094836b8f3b374ec88a44f9b8'
  12. data['lts'] = '1658035640855'
  13. data['datebv'] = 'ac3645a1fcb1cddff832d1042e2f9dfd'
  14. data['doctype'] = 'json'
  15. data['version'] = '2.1'
  16. data['keyfrom']= 'fanyi.web'
  17. data['action'] = 'FY_BY_REALTlME'

  18. data = urllib.parse.urlencode(data).encode('utf-8')
  19. pp = urllib.request.urlopen(url.data)
  20. html = response.read().decode('utf-8')
复制代码

报错
  1.     pp = urllib.request.urlopen(url.data)
  2. AttributeError: 'str' object has no attribute 'data'
复制代码
最佳答案
2022-7-17 14:16:19
提示狠明显了
你的url是一个字符串,哪来的data属性
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-7-17 14:16:19 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
提示狠明显了
你的url是一个字符串,哪来的data属性
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-17 14:19:22 | 显示全部楼层
wp231957 发表于 2022-7-17 14:16
提示狠明显了
你的url是一个字符串,哪来的data属性

字打错了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-17 14:20:48 | 显示全部楼层
wp231957 发表于 2022-7-17 14:16
提示狠明显了
你的url是一个字符串,哪来的data属性

那改完还有一个报错
  1.     html = response.read().decode('utf-8')
  2. NameError: name 'response' is not defined
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-17 14:23:14 From FishC Mobile | 显示全部楼层
shiyouroc 发表于 2022-7-17 14:20
那改完还有一个报错

NameError: name 'response' is not defined
你不看错误信息吗
这不就是response没有定义,就直接使用
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-17 14:29:39 | 显示全部楼层
wp231957 发表于 2022-7-17 14:23
NameError: name 'response' is not defined
你不看错误信息吗
这不就是response没有定义,就直接使用

所以,怎么整呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-17 14:32:14 From FishC Mobile | 显示全部楼层
shiyouroc 发表于 2022-7-17 14:29
所以,怎么整呢

import urllib.request
我没在电脑前,不过现在一般都用requests模块
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-17 14:33:28 From FishC Mobile | 显示全部楼层
shiyouroc 发表于 2022-7-17 14:29
所以,怎么整呢

https://fishc.com.cn/forum.php?mod=viewthread&tid=200493
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-17 14:33:38 | 显示全部楼层
wp231957 发表于 2022-7-17 14:32
import urllib.request
我没在电脑前,不过现在一般都用requests模块

我不是已经import、过来吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-17 14:35:18 From FishC Mobile | 显示全部楼层
shiyouroc 发表于 2022-7-17 14:33
我不是已经import、过来吗

你这个是urllib模块,这个模块现在明显使用率不行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-17 14:36:31 | 显示全部楼层
wp231957 发表于 2022-7-17 14:35
你这个是urllib模块,这个模块现在明显使用率不行

我import urllib.requests
他说没有这个模块
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-17 14:37:32 From FishC Mobile | 显示全部楼层
shiyouroc 发表于 2022-7-17 14:36
我import urllib.requests
他说没有这个模块

pip  install  requests
import  requests
它是一个三方模块,需要安装
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-17 14:50:29 | 显示全部楼层
shiyouroc 发表于 2022-7-17 14:36
我import urllib.requests
他说没有这个模块


有道有反爬机制,像salt,sign,lts都是有加密机制的,不能乱填,你需要去还原有道的加密机制
你还有加上请求头
urllib版的参考代码
  1. import urllib.request
  2. import urllib.parse
  3. import hashlib
  4. import random
  5. import time
  6. import sys

  7. url = "https://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule"

  8. headers = {
  9.     'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36',
  10.     'Referer': 'https://fanyi.youdao.com/',
  11.     'Cookie': 'OUTFOX_SEARCH_USER_ID=1907954952@182.203.147.49; OUTFOX_SEARCH_USER_ID_NCOO=2032702153.1070416; fanyi-ad-id=306808; fanyi-ad-closed=1; ___rl__test__cookies=1654931146702'
  12. }

  13. lts = str(int(time.time()*1000))
  14. salt = lts + str(random.randint(0,10))
  15. sign_str = 'fanyideskweb' + "I love FishC!" + salt + 'Ygy_4c=r#e#4EX^NUGUc5'
  16. m = hashlib.md5(sign_str.encode())
  17. sign = m.hexdigest()

  18. data = {
  19.     "i":"I love FishC!",
  20.     "from":"AUTO",
  21.     "to":"AUTO",
  22.     "smartresult":"dict",
  23.     "client":"fanyideskweb",
  24.     "salt":salt,
  25.     "sign":sign,
  26.     "lts":lts,
  27.     "bv":"a16a6033635b516a9006542112cdda8f",
  28.     "doctype":"json",
  29.     "version":"2.1",
  30.     "keyfrom":"fanyi.web",
  31.     "action":"FY_BY_CLICKBUTTION"
  32. }

  33. data = urllib.parse.urlencode(data).encode('utf-8')
  34. request = urllib.request.Request(url,data,headers)
  35. response = urllib.request.urlopen(request)
  36. html = response.read().decode('utf-8')
  37. try:
  38.     resalut = eval(html)["translateResult"][0][0]["tgt"]
  39.     print("翻译结果:",resalut)
  40. except:
  41.     print("翻译失败")
复制代码

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
python爱好者. + 5 + 5 + 3 鱼C有你更精彩^_^

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-23 07:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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