1

有一个我的浏览器可以访问的网页,但urllib2.urlopen()(Python)和wget都返回HTTP 403(Forbidden)。有没有办法弄清楚发生了什么?urllib2和wget返回HTTP 403(禁止),而浏览器返回OK

我使用的是最原始的形式,如urllib2.urlopen("http://test.com/test.php"),对浏览器和wget都使用相同的url(http://test.com/test.php)。在测试之前,我已在浏览器中清除了所有的Cookie。

非常感谢!

+0

我试过它打印'成功bla'你运行什么系统和什么版本的python。 – enginefree

+0

该网站可能会阻碍屏幕抓取。请参阅'http:// test.com/robots.txt'。尝试更改User-Agent标题。 – jfs

+0

@enginefree我不认为OP的字面意思是'http:// test.com/test.php'。 – Natan

回答

0

有些网站不允许网页抓取。尝试使用Python requests

这个库应该工作。

+1

谢谢,但请求和urllib2之间的根本区别是什么?它仍然是关于建立一个HTTP请求并将其发送出去,right>? – CodeNoob

2

Python库urllib有一个默认的用户代理字符串,其中包含单词Python,wget使用“wget/VERSION”。如果您正在创建的网站检查用户代理信息,它可能会拒绝这两个。例如,谷歌会这样做。

很容易修复..对于wget,请使用-U参数,对于urllib,请使用适当的字符串创建URLOpener。

+0

或者首先检查robots.txt文件 – Vor

+0

robots.txt文件是一个可选入口爬虫程序,不需要检查它 - 并且用户代理程序与爬虫程序之间的匹配以及文件内容不会导致服务器回报403. – Spaceghost

+0

不知道,谢谢 – Vor

相关问题