您的位置:首页 > 编程语言 > Python开发

python 爬虫(三)

2016-01-15 22:34 537 查看
爬虫学了两天,没什么页面好爬,就去搞hdoj。突然发现一个现象,就是对应题目的下面会有一个recommand的标签,如果不登录就不会显示,之后了解到必须要用模拟登录的机制来保存cookie去登录hdoj的系统才能可以。

要使用post方法,点击hdoj的页面。开启网页的网络监视器功能,然后登录hdoj登录,在网络监视器中找到变化的那个条目,也就是找到hdoj登录页面的真实网页。可知真实的页面是这个:

http://acm.hdu.edu.cn/userloginex.php?action=login&cid=0¬ice=0

接下来就是获取你的账号登录的cookie的值,存储在cookie.txt的文本中。

filename = 'cookie.txt'   #存储cookie
cookie=None               #保存函数获取的cookie
user_agent  = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
headers = {'User-Agent' : user_agent}#头部
postdata = urllib.urlencode({   #post的数据
'username':'461807914',
'userpass':'********'
})


获取cookie:

def getCookies():    #simulate log and catch the cookie
logUrl = 'http://acm.hdu.edu.cn/userloginex.php?action=login&cid=0¬ice=0'
cookie = cookielib.MozillaCookieJar(filename)
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
request = urllib2.Request(#在request中加入url,信息和头部
url = logUrl,
data = postdata,
headers=headers
)
result = opener.open(request)
cookie.save(ignore_discard=True, ignore_expires=True)    #保存cookie
return opener


这样就能获得你的登录信息的cookie值。

content = opener.open(request).read()#直接用上面返回的那个opener就能爬下来网页了。


参考和学习的博客
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: