在登录网站的过程中,有的网页只有通过登录之后,才能显示出来。并且有的网页登录和不登录是不一样的。如果通过爬虫抓取的话,可以通过先登录一次然后通过cookie来进行登录。
测试网页为麦子学校的登录页面
#!/usr/bin/env python
#coding=utf-8
import urllib
import urllib2
import cookielib
from bs4 import BeautifulSoup
def login():
loginUrl= 'http://www.maiziedu.com/user/login/'
values= {'account_l':'****','password_l':'****'}
headers= {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X10_11_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87Safari/537.36'}
filename = 'cookie.txt'
cookie= cookielib.MozillaCookieJar(filename)
opener =urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
postdata = urllib.urlencode(values)
result= opener.open(loginUrl,postdata)
cookie.save(ignore_discard=True,ignore_expires=True)
listurl = 'http://www.maiziedu.com/home/base/'
result1= opener.open(listurl)
bsObj = BeautifulSoup(result1.read(),'html.parser')
title = bsObj.body.h1
returntitle
if __name__ == '__main__':
res = login()
ifres == None:
print'no result'
else:
printres
loginUrl是登录的URL,values是登录的过程中需要输入的用户名和密码。下面是创建cookie并且将cookie保存到文件中。当第一次登录成功,获取到cookie之后,在爬取需要登录才能获取到的URL。