shiyouroc 发表于 2022-7-17 14:12:00

python 爬虫报错

import urllib.request
import urllib.parse
url ='https://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
data = {}
data['i']= 'I love FishC!'
data['from'] = 'AUTO'
data['to']= 'AUTO'
data['smartresult'] = 'dict'
data['client'] = 'fanyideskweb'
data['salt'] = '16580356408559'
data['sign'] = '3a1d2d9094836b8f3b374ec88a44f9b8'
data['lts'] = '1658035640855'
data['datebv'] = 'ac3645a1fcb1cddff832d1042e2f9dfd'
data['doctype'] = 'json'
data['version'] = '2.1'
data['keyfrom']= 'fanyi.web'
data['action'] = 'FY_BY_REALTlME'

data = urllib.parse.urlencode(data).encode('utf-8')
pp = urllib.request.urlopen(url.data)
html = response.read().decode('utf-8')

报错
    pp = urllib.request.urlopen(url.data)
AttributeError: 'str' object has no attribute 'data'

wp231957 发表于 2022-7-17 14:16:19

提示狠明显了
你的url是一个字符串,哪来的data属性

shiyouroc 发表于 2022-7-17 14:19:22

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

字打错了

shiyouroc 发表于 2022-7-17 14:20:48

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

那改完还有一个报错    html = response.read().decode('utf-8')
NameError: name 'response' is not defined

wp231957 发表于 2022-7-17 14:23:14

shiyouroc 发表于 2022-7-17 14:20
那改完还有一个报错

NameError: name 'response' is not defined
你不看错误信息吗
这不就是response没有定义,就直接使用

shiyouroc 发表于 2022-7-17 14:29:39

wp231957 发表于 2022-7-17 14:23
NameError: name 'response' is not defined
你不看错误信息吗
这不就是response没有定义,就直接使用

所以,怎么整呢{:10_266:}

wp231957 发表于 2022-7-17 14:32:14

shiyouroc 发表于 2022-7-17 14:29
所以,怎么整呢

import urllib.request
我没在电脑前,不过现在一般都用requests模块

wp231957 发表于 2022-7-17 14:33:28

shiyouroc 发表于 2022-7-17 14:29
所以,怎么整呢

https://fishc.com.cn/forum.php?mod=viewthread&tid=200493

shiyouroc 发表于 2022-7-17 14:33:38

wp231957 发表于 2022-7-17 14:32
import urllib.request
我没在电脑前,不过现在一般都用requests模块

我不是已经import、过来吗

wp231957 发表于 2022-7-17 14:35:18

shiyouroc 发表于 2022-7-17 14:33
我不是已经import、过来吗

你这个是urllib模块,这个模块现在明显使用率不行

shiyouroc 发表于 2022-7-17 14:36:31

wp231957 发表于 2022-7-17 14:35
你这个是urllib模块,这个模块现在明显使用率不行

我import urllib.requests
他说没有这个模块

wp231957 发表于 2022-7-17 14:37:32

shiyouroc 发表于 2022-7-17 14:36
我import urllib.requests
他说没有这个模块

pipinstallrequests
importrequests
它是一个三方模块,需要安装

临时号 发表于 2022-7-17 14:50:29

shiyouroc 发表于 2022-7-17 14:36
我import urllib.requests
他说没有这个模块

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

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

headers = {
    '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',
    'Referer': 'https://fanyi.youdao.com/',
    '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'
}

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

data = {
    "i":"I love FishC!",
    "from":"AUTO",
    "to":"AUTO",
    "smartresult":"dict",
    "client":"fanyideskweb",
    "salt":salt,
    "sign":sign,
    "lts":lts,
    "bv":"a16a6033635b516a9006542112cdda8f",
    "doctype":"json",
    "version":"2.1",
    "keyfrom":"fanyi.web",
    "action":"FY_BY_CLICKBUTTION"
}

data = urllib.parse.urlencode(data).encode('utf-8')
request = urllib.request.Request(url,data,headers)
response = urllib.request.urlopen(request)
html = response.read().decode('utf-8')
try:
    resalut = eval(html)["translateResult"]["tgt"]
    print("翻译结果:",resalut)
except:
    print("翻译失败")
页: [1]
查看完整版本: python 爬虫报错