返回信息流写了一个简的单爬取网页数据的程序,在我的windows(xp 32位)开发机器上使用该爬虫程序运行能获取到数据,但是将该爬虫程序部署到linux 服务器上(centos 64位)就会出现这个错误。我百度搜索的结果都是说网站禁止爬虫,需要加header字段,但网站本身并没有做限制,所以不是header信息的原因,这个爬虫程序在windows测试机上运行几天都可以正常爬去数据,求教原因。
这是一条镜像帖。来源:北邮人论坛 / python / #3177同步于 2014/8/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖
urllib2.urlopen HTTP Error 403
IDEALS
2014/8/28镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
> urllib2.urlopen HTTP Error 403
http://zh.wikipedia.org/zh/HTTP_403
> 就是简单爬取一个网页数据,在我的windows(xp 32位)开发机器上没问题,但是部署到linux 服务器上(centos 64位)就会出现这个错误。
你在说什么?是说你的网站还是你的爬虫怎么了?
> 我百度搜索的结果都是说网站禁止爬虫,需要加header字段,但网站本身并没有禁止爬虫,
给个建议,需要搜索技术问题时使用谷歌
> 因为在windows上运行几天都没出现过问题,求教原因
鬼能根据这两句话知道什么……
【 在 reverland 的大作中提到: 】
: > urllib2.urlopen HTTP Error 403
: http://zh.wikipedia.org/zh/HTTP_403
: > 就是简单爬取一个网页数据,在我的windows(xp 32位)开发机器上没问题,但是部署到linux 服务器上(centos 64位)就会出现这个错误。
: ...................
我修改了下帖子,应该说明白了,是我的爬虫程序在我的windows测试机器上运行可以正确获取数据,但是把爬虫程序放到linux服务器上运行就会返回HTTP Error 403错误。
【 在 YouXia 的大作中提到: 】
: 应该与系统没啥关系,403错误,可能有2个原因:
: 1.你的Win系统与Linux系统是同一个IP,你Win下爬取的次数太多,管理员把你的这个IP封掉了,你现在在试试Win下可以正常抓取不。
: 2.那个Win系统与Linux系统不是同一IP,那么Linux系统的IP可能恰好在进制访问的IP里面,你在Linux下使用浏览器访问下该链接看看。
谢谢~
我的windows和我的linux 不是同一个ip,我的windows机器上的程序一直在正常运行,并且获取到了正确的数据。那原因可能就是您说的第二个了,我刚才修改了下程序,在我的linux服务器上爬取目标url的根目录是可以的,是不是目标url在该目录对我的linux 服务器的ip有限制呢。
这两个机器的物理位置有没有很大的区别?比如一个在家,一个在公司?有可能对方网站真的觉得你的那个linux机器的ip地址好像来自某个攻击者。
简单的方法:
1. 在你的windows机器上装虚拟机,或者用一个u盘启动linux,跑你同一个爬虫。
2. 在你的linux机器上装虚拟机,装个windows,跑你同一个爬虫。
3. 让你的linux机器作为代理服务器,用你的windows机器爬。
4. 让你的Windows机器作为代理服务器,用你的linux机器爬。
【 在 nuanyangyang 的大作中提到: 】
: 这两个机器的物理位置有没有很大的区别?比如一个在家,一个在公司?有可能对方网站真的觉得你的那个linux机器的ip地址好像来自某个攻击者。
: 简单的方法:
: 1. 在你的windows机器上装虚拟机,或者用一个u盘启动linux,跑你同一个爬虫。
: ...................
谢谢,这两台机器都在公司,只不过在不同的网段。后来我查到问题所在了,是目标网站的服务器上对linux服务器所在的ip有限制。在网站应用上添加了allow list之后可以正常获取数据了。非常感谢这么详细的解答,以后遇到类似问题借鉴您的思路
【 在 YouXia 的大作中提到: 】
: 刚看到,其实不用这么麻烦的。
: 这种情况,以后你直接用浏览器打开试试,如果linux是无界面的话,不能使用浏览器,那么就用wget命令试试。
:
好的,我试试,谢谢~