【总结】网络抓取和模拟登陆相关的经验和注意事项

此贴内容已移至:

【总结】静态网页抓取,动态网页抓取,模拟登陆的注意事项和心得


 

如果不加User-Agent,则有些网址的访问,会被禁止的

此点,之前别人很多人已总结。

此处,还是再啰嗦一遍。

比如,直接通过浏览器访问,csdn的某个图片地址:

http://my.csdn.net/uploads/201205/03/1336005998_9131.png

是可以的。

那是因为浏览器访问时,(用IE9的F12可以抓取到)已添加对应的User-Agent:

User-Agent  Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)

而当用程序去模拟访问时,直接用Python代码,比如:

resp = urllib2.urlopen(fileUrl, timeout=gConst['defaultTimeout']);

是会出错的:

HTTP Error 403: Forbidden

而加上对应的User-Agent后,即可:

gConst = {
    'UserAgent' : 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E)',
 
    'defaultTimeout': 20, # default timeout seconds for urllib2.urlopen
}
 
request = urllib2.Request(fileUrl, headers={'User-Agent' : gConst['UserAgent']});
resp = urllib2.urlopen(request, timeout=gConst['defaultTimeout']);

如果得不到对应的Cookie,则去看看是否是由于自动跳转导致的

 
如果程序中得不到cookie(因此无法模拟登陆)可以看看是否是 内部自动跳转 auto redirect 而导致 无法获得cookie  
在模拟登陆的时候,常常会遇到,虽然代码已经正常模拟执行某个http的请求了。

但是返回的结果中,却没有得到对应的cookie(以及返回的html值也不对,是之后的某个网页的内容)

此时,就可以去看看,分析出来的该http请求过程中,是不是带了自动跳转

如果是,用程序模拟时,禁止自动跳转,一般即可得到所期望的cookie,以及返回的html。

例子:

【记录】模拟登陆google



发表评论

电子邮件地址不会被公开。 必填项已用*标注

无觅相关文章插件,快速提升流量