请问“论一只爬虫的自我修养2:实战”中,爬取的数据为什么不是字典而是整个网页
代码如下import urllib.request
import urllib.parse
url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
data={}
data['i']= 'i love fishc.com'
data['from']= 'AUTO'
data['to']= 'AUTO'
data['smartresult']= 'dict'
data['client']= 'fanyideskweb'
data['salt']= '15841896797322'
data['sign']= 'a8b0706f8a366ad3b1b156e451b7fe76'
data['ts']= '1584189679732'
data['bv']= 'a9c3483a52d7863608142cc3f302a0ba'
data['doctype:']= 'json'
data['version']= '2.1'
data['keyfrom']= 'fanyi.web'
data['action']= 'FY_BY_CLICKBUTTION'
data=urllib.parse.urlencode(data).encode('utf-8')
response=urllib.request.urlopen(url,data)
html=response.read().decode('utf-8')
print(html)
求各位解答
本帖最后由 TJBEST 于 2020-3-14 22:13 编辑
爬取什么得看对方服务器给你什么啊?你查查 返回的的 response.headers() 里面的 content-type是什么 好好研究一下。
爬虫就是根据他返回的数据 进行筛选 然后进一步爬取数据 或者储存数据。他返回的是网页也是可以爬数据的,具体返回的是什么,得看服务器啊
返回的可能是网页 、也可能是json 更有可能是 多媒体。而且 网站都有反爬虫机制,你获取数据后,最好看看对不对。
如果返回的网页 是诸如“错”,“无法访问”之类的字,证明你没爬到 我给你 来一个 我写的吧 你看看 和你的区别 你返回的不是Json应该是post数据有问题
import urllib.request
import urllib.parse
import json
url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
proxy_url = ['183.146.213.157:80','101.231.104.82','39.137.69.10:80','101.95.115.196:80']#代理列表
index = 0
while True:
inputStr = input('\n请输入你想要翻译的中文(输入q退出):\n')
while True:
try:
if inputStr == 'q':
break
post = {'i':inputStr,'from': 'zh-CHS','to':' en','smartresult':' dict','client': 'fanyideskweb',
'salt': '15766316706921','sign': '226a73a4714da07f6fad23fa645c2240','ts': '1576631670692',
'bv': '5575008ba9785f184b106838a72d6536','doctype':'json','version': '2.1','keyfrom': 'fanyi.web',
'action': 'FY_BY_REALTlME'}
postRealData = urllib.parse.urlencode(post).encode('utf-8')
#绑定代理
proxy = urllib.request.ProxyHandler({'http':proxy_url})#绑定代理网址的程序 协议:网址端口 字典
opener = urllib.request.build_opener(proxy)#理解为 代理服务可以运用
urllib.request.install_opener(opener)#默认的全局代理服务(其实可以定义多个代理,这个是不设置默认的)
req = urllib.request.Request(url,data = postRealData)
#opener没有添加报头的函数
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36')#伪装浏览器访问
response = urllib.request.urlopen(req)
responseData = response.read().decode('utf-8')
jsonData = json.loads(responseData)
translateResult = jsonData['translateResult']['tgt']
print('翻译的结果是' + translateResult)
break
except Exception:
index =index + 1
index = index % len(proxy_url)
index =index + 1
index = index % len(proxy_url) 我找到了你的错误了
data['doctype']= 'json'
你多打了一个 : 给个采纳吧 TJBEST 发表于 2020-3-14 22:30
我找到了你的错误了
data['doctype']= 'json'
你多打了一个 : 给个采纳吧
感谢{:5_106:} 怎么感觉不对
import urllib.request
import urllib.parse
url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
data={}
data['i']= '你好'
data['from']= 'AUTO'
data['to']= 'AUTO'
data['smartresult']='dict'
data['client']= 'fanyideskweb'
data['salt']= '15830270361564'
data['sign']= '722c486628af34b85df217c4fe6b111a'
data['ts']= '1583027036156'
data['bv']= '0ed2e07b89acaa1301d499442c9fdf79'
data['doctypt']= 'json'
data['version']= '2.1'
data['keyfrom']= 'fanyi.web'
data['action']= 'FY_BY_REALTlME'
print(data)
data=urllib.parse.urlencode(data).encode('utf-8')
response =urllib.request.urlopen(url,data)
html=response.read().decode('utf-8')
print(html)
我这段代码 也是爬的网页。。
我错了,doctpye 打错了,所以 ,爬出全部网页的,可能是字典错误
页:
[1]