网络上有一个FLV文件,可以直接在Chrome中下载。该档案是由中央电视台(中央电视台)出版的电视节目。中央电视台是一家非营利性国有广播电台,由中国纳税人出资,允许我们在不侵犯版权的情况下下载他们的内容。模拟浏览器下载文件?
使用wget
,我可以从其他地址下载文件,但不能从Chrome中的地址下载文件。
这是我一直试图做的事:
url='http://114.80.235.200/f4v/94/163005294.h264_1.f4v?10000&key=7b9b1155dc632cbab92027511adcb300401443020d&playtype=1&tk=163659644989925531390490125&brt=2&bc=0&nt=0&du=1496650&ispid=23&rc=200&inf=1&si=11000&npc=1606&pp=0&ul=2&mt=-1&sid=10000&au=0&pc=0&cip=222.73.44.31&hf=0&id=tudou&itemid=135558267&fi=163005294&sz=59138302'
wget -c $url --user-agent="" -O xfgs.f4v
这不起作用或者:
wget -c $url -O xfgs.f4v
输出是:
Connecting to 118.26.57.12:80... connected.
HTTP request sent, awaiting response... 403 Forbidden
2013-02-13 09:50:42 ERROR 403: Forbidden.
我在做什么错误?
我最终想用Python库mechanize
下载它。这里是代码我使用的为:
import mechanize
br = mechanize.Browser()
br = mechanize.Browser()
br.set_handle_robots(False)
br.set_handle_equiv(False)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
url='http://114.80.235.200/f4v/94/163005294.h264_1.f4v?10000&key=7b9b1155dc632cbab92027511adcb300401443020d&playtype=1&tk=163659644989925531390490125&brt=2&bc=0&nt=0&du=1496650&ispid=23&rc=200&inf=1&si=11000&npc=1606&pp=0&ul=2&mt=-1&sid=10000&au=0&pc=0&cip=222.73.44.31&hf=0&id=tudou&itemid=135558267&fi=163005294&sz=59138302'
r = br.open(url).read()
tofile=open("/tmp/xfgs.f4v","w")
tofile.write(r)
tofile.close()
这是结果:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/dist-packages/mechanize/_mechanize.py", line 203, in open
return self._mech_open(url, data, timeout=timeout)
File "/usr/lib/python2.7/dist-packages/mechanize/_mechanize.py", line 255, in _mech_open
raise response
mechanize._response.httperror_seek_wrapper: HTTP Error 403: Forbidden
谁能解释如何获得mechanize
代码工作吗?
如果您使用:'user_agent ='Mozilla/5.0(X11; U; Linux i686; en-US; rv:1.9.0.1)Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1)''然后' wget -c“$ {url}”--user-agent =“$ {user_agent}”-O x fgs.f4v'?如果这不起作用,那么Python可能无法帮助你! – Johnsyweb 2013-02-13 02:45:14
您得到403响应的原因很可能是因为当您在浏览器中访问网站时,网站会保持状态,最有可能是cookie。这就是YouTube所做的。从浏览器中导出您的cookie并将其设置在wget中(您可以简单地使用“Cookie:”标题),它应该可以工作。 – 2013-02-13 02:47:17
@Johnsyweb在大多数情况下,Python可以完美地模拟浏览器(当然,除了通过JavaScript等设置cookie的奇怪网站之外)。 – 2013-02-13 02:49:13