方式一urllib:
導(dǎo)入包
'''
from urllib import request,parse
from http import cookiejar
'''
登錄時(shí)需要POST的數(shù)據(jù)
date = {
'email':email,
'password':password
}
post_data = parse.urlencode(data).encode('utf-8')
設(shè)置請(qǐng)求頭
refer字段代表來(lái)源地
headers = {
'User-agent':'xxx',
'cookie':'xxx',
'refer':'xxx'
}
登錄時(shí)表單提交到的地址(用開(kāi)發(fā)者工具可以看到)
login_url = ' http://xxxxx'
構(gòu)造登錄請(qǐng)求
req = request.Request(login_url, headers = headers, data = post_data)
構(gòu)造cookie
cookie = cookiejar.CookieJar()
由cookie構(gòu)造opener
handler = request.HTTPCookieProcessor(cookie)
opener = request.build_opener(handler)
發(fā)送登錄請(qǐng)求盔然,此后這個(gè)opener就攜帶了cookie们童,以證明自己登錄過(guò)
resp = opener.open(req)
登錄后才能訪問(wèn)的網(wǎng)頁(yè)
url = 'xxx'
構(gòu)造訪問(wèn)請(qǐng)求
req = urllib.request.Request(url, headers = headers)
resp = opener.open(req)
print(resp.read().decode('utf-8'))
方式二requests:
import requests
登錄后才能訪問(wèn)的網(wǎng)頁(yè)
url = 'xxxx'
瀏覽器登錄后得到的cookie,也就是剛才復(fù)制的字符串
cookie_str = r'JSESSIONID=xxxxxxxxxxxxxxxxxxxxxx; iPlanetDirectoryPro=xxxxxxxxxxxxxxxxxx'
把cookie字符串處理成字典片择,以便接下來(lái)使用
cookies = {}
for line in cookie_str.split(';'):
key, value = line.split('=', 1)
cookies[key] = value
設(shè)置請(qǐng)求頭
headers = {'User-agent':'xxx'}
在發(fā)送get請(qǐng)求時(shí)帶上請(qǐng)求頭和cookies
resp = requests.get(url, headers = headers, cookies = cookies)
print(resp.content.decode('utf-8'))