鱼C论坛

 找回密码
 立即注册
查看: 2192|回复: 8

爬取有道词典HTTP Error 503: Service Unavailable

[复制链接]
发表于 2019-9-11 03:09:35 | 显示全部楼层 |阅读模式

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

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

x
如题:
  1. import urllib.request
  2. import urllib.parse
  3. import json

  4. #text1=input('输入要翻译内容:')
  5. url ='http://fanyi.youdao.com/'

  6. response=urllib.request.urlopen(url)

  7. htm=response.read().decode('utf-8')

  8. print(htm)
复制代码

错误:
  1. Traceback (most recent call last):
  2.   File "C:/Users/cchen108/OneDrive - kochind.com/Desktop/YD.py", line 7, in <module>
  3.     response=urllib.request.urlopen(url)
  4.   File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1264.0_x64__qbz5n2kfra8p0\lib\urllib\request.py", line 222, in urlopen
  5.     return opener.open(url, data, timeout)
  6.   File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1264.0_x64__qbz5n2kfra8p0\lib\urllib\request.py", line 531, in open
  7.     response = meth(req, response)
  8.   File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1264.0_x64__qbz5n2kfra8p0\lib\urllib\request.py", line 641, in http_response
  9.     'http', request, response, code, msg, hdrs)
  10.   File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1264.0_x64__qbz5n2kfra8p0\lib\urllib\request.py", line 569, in error
  11.     return self._call_chain(*args)
  12.   File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1264.0_x64__qbz5n2kfra8p0\lib\urllib\request.py", line 503, in _call_chain
  13.     result = func(*args)
  14.   File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1264.0_x64__qbz5n2kfra8p0\lib\urllib\request.py", line 649, in http_error_default
  15.     raise HTTPError(req.full_url, code, msg, hdrs, fp)
  16. urllib.error.HTTPError: HTTP Error 503: Service Unavailable
复制代码


如果我把url改为‘https://www.doordash.com/’,其他不变运行结果是正常输出
用的公司网络,使用Microsoft Edge,输入‘http://fanyi.youdao.com/’可以访问
因为出错还没到翻译那一步

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

使用道具 举报

发表于 2019-9-11 09:05:23 | 显示全部楼层
你应该添加一个 User-Agent 否则会被服务器当做Ban 掉 不会响应你的请求

  1. def foo2():
  2.     import urllib.request
  3.     from urllib.request import Request, urlopen
  4.     import urllib.parse
  5.     import json

  6.     # text1=input('输入要翻译内容:')
  7.     url = 'http://fanyi.youdao.com/'

  8.     req = Request(url)
  9.     req.add_header("user-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36")
  10.     response = urlopen(req)

  11.     htm = response.read().decode('utf-8')

  12.     print(htm)


  13. if __name__ == '__main__':
  14.     foo2()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-11 09:06:05 | 显示全部楼层
你应该添加一个 User-Agent 否则会被服务器 Ban 掉

  1. def foo2():
  2.     import urllib.request
  3.     from urllib.request import Request, urlopen
  4.     import urllib.parse
  5.     import json

  6.     # text1=input('输入要翻译内容:')
  7.     url = 'http://fanyi.youdao.com/'

  8.     req = Request(url)
  9.     req.add_header("user-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36")
  10.     response = urlopen(req)

  11.     htm = response.read().decode('utf-8')

  12.     print(htm)


  13. if __name__ == '__main__':
  14.     foo2()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-11 09:33:45 | 显示全部楼层
“503错误”的定义:由于临时的服务器维护或者过载,服务器当前无法处理请求。这个状况是临时的,并且将在一段时间以后恢复。如果能够预计延迟时间,那么响应中可以包含一个Retry-After起头用以标明这个延迟时间。如果没有给出这个Retry-After信息,那么客户端应当以处理500(Server Internal Error)响应的方式处理它。注意:503状态码的存在并不意味着必须在服务器过载的时候使用它。某些服务器只不过是希望拒绝某些客户端的连接。

我认为出现这个问题是 你的请求被服务器拒绝了(它识别到你是py程序的访问),因为有道是有反爬措施的,你缺了基础的一步:把py的User-Agent 修改(即伪造)成浏览器的 User-Agent 。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-11 10:52:58 | 显示全部楼层
本帖最后由 geen 于 2019-9-11 13:15 编辑

我运行了你的代码,连续运行了5,6次,都没有被拒绝请求,都能正常输出。尴尬~
你用的是什么版本的python?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-13 01:05:30 | 显示全部楼层
geen 发表于 2019-9-11 10:52
我运行了你的代码,连续运行了5,6次,都没有被拒绝请求,都能正常输出。尴尬~
你用的是什么版本 ...

确实是,我回酒店一样的也可以正常运行。python3.7
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-13 01:08:17 | 显示全部楼层
、尾指一勾 发表于 2019-9-11 09:05
你应该添加一个 User-Agent 否则会被服务器当做Ban 掉 不会响应你的请求

这个是要隐藏,但我啥都没干就是就是访问网页,回酒店不光访问还可以翻译。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-19 06:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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