python模拟登录页面下载_Python爬虫实战入门四:使用Cookie模拟登录——获取电子书下载链接...
在實(shí)際情況中,很多網(wǎng)站的內(nèi)容都是需要登錄之后才能看到,如此我們就需要進(jìn)行模擬登錄,使用登錄后的狀態(tài)進(jìn)行爬取。這里就需要使用到Cookie。
現(xiàn)在大多數(shù)的網(wǎng)站都是使用Cookie跟蹤用戶的登錄狀態(tài),一旦網(wǎng)站驗(yàn)證了登錄信息,就會將登錄信息保存在瀏覽器的cookie中。網(wǎng)站會把這個cookie作為驗(yàn)證的憑據(jù),在瀏覽網(wǎng)站的頁面是返回給服務(wù)器。
因?yàn)閏ookie是保存在本地的,自然cookie就可以進(jìn)行篡改和偽造,暫且不表,我們先來看看Cookie長什么樣子。
打開網(wǎng)頁調(diào)試工具,隨便打開一個網(wǎng)頁,在“network”選項(xiàng)卡,打開一個鏈接,在headers里面:
Cookie
我們復(fù)制出來看看:
__guid=137882464.208312339030071800.1455264073383.613;
__huid=10POq43DvPO3U0izV0xej4%2BFDIemVPybee0j1Z1xnJnpQ%3D;
__hsid=825c7462cc8195a5;
somultiswitch=1;
__seedSign=68;
count=1; sessionID=132730903.3074093016427610600.1483758834211.764;
piao34=1;
city_code=101280101;
customEng=1-7
由一個個鍵值對組成。
接下來,我們以看看豆(http://kankandou.com)的一本書籍的詳情頁為例,講解一下Cookie的使用。
看看豆是一個電子書下載網(wǎng)站,自己Kindle上的書多是從這上面找尋到的。
示例網(wǎng)址為:https://kankandou.com/book/view/22353.html
正常情況下,未登錄用戶是看不到下載鏈接的,比如這樣:
隱藏了書籍的下載鏈接。
其頭信息如下:
頭信息
我們再看看登錄之后的頁面:
登錄后
下載鏈接已經(jīng)顯示出來了,我們看看頭信息的Cookie部分
登陸后Cookie
很明顯地與之前未登錄狀態(tài)下的Cookie有區(qū)別。
接下來,我們按照上一章爬取騰訊新聞的方法,對示例網(wǎng)址(https://kankandou.com/book/view/22353.html)進(jìn)行HTTP請求:
# coding:utf-8
import requests
from bs4 import BeautifulSoup
url = 'https://kankandou.com/book/view/22353.html'
wbdata = requests.get(url).text
soup = BeautifulSoup(wbdata,'lxml')
print(soup)
結(jié)果如下:
結(jié)果
我們從中找到下載鏈接存在的欄目“書籍導(dǎo)購”的HTML代碼:
書籍導(dǎo)購
去亞馬遜購買《宇宙是貓咪酣睡的夢》如同我們在未登錄狀態(tài)使用瀏覽器訪問這個網(wǎng)址一樣,只顯示了亞馬遜的購買鏈接,而沒有電子格式的下載鏈接。
我們嘗試使用以下登錄之后的Cookie:
使用Cookie有兩種方式,
1、直接將Cookie寫在header頭部
完整代碼如下:
# coding:utf-8
import requests
from bs4 import BeautifulSoup
cookie = '''cisession=19dfd70a27ec0eecf1fe3fc2e48b7f91c7c83c60;CNZZDATA1000201968=1815846425-1478580135-https%253A%252F%252Fwww.baidu.com%252F%7C1483922031;Hm_lvt_f805f7762a9a237a0deac37015e9f6d9=1482722012,1483926313;Hm_lpvt_f805f7762a9a237a0deac37015e9f6d9=1483926368'''
header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36',
'Connection': 'keep-alive',
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Cookie': cookie}
url = 'https://kankandou.com/book/view/22353.html'
wbdata = requests.get(url,headers=header).text
soup = BeautifulSoup(wbdata,'lxml')
print(soup)
帶Cookie請求
紅色橢圓的部分與未帶Cookie訪問是返回的HTML一致,為亞馬遜的購買鏈接,
紅色矩形部分則為電子書的下載鏈接,這是在請求中使用的Cookie才出現(xiàn)的
對比實(shí)際網(wǎng)頁中的模樣,與用網(wǎng)頁登錄查看的顯示頁面是一致的。
功能完成。接下來看看第二種方式
2、使用requests插入Cookie
完整代碼如下:
# coding:utf-8
import requests
from bs4 import BeautifulSoup
cookie = {
"cisession":"19dfd70a27ec0eecf1fe3fc2e48b7f91c7c83c60",
"CNZZDATA100020196":"1815846425-1478580135-https%253A%252F%252Fwww.baidu.com%252F%7C1483922031",
"Hm_lvt_f805f7762a9a237a0deac37015e9f6d9":"1482722012,1483926313",
"Hm_lpvt_f805f7762a9a237a0deac37015e9f6d9":"1483926368"
}
url = 'https://kankandou.com/book/view/22353.html'
wbdata = requests.get(url,cookies=cookie).text
soup = BeautifulSoup(wbdata,'lxml')
print(soup)
如此獲取到的也是登錄后顯示的HTML:
requests
這樣,我們就輕松的使用Cookie獲取到了需要登錄驗(yàn)證后才能瀏覽到的網(wǎng)頁和資源了。
這里只是簡單介紹了對Cookie的使用,關(guān)于Cookie如何獲取,手動復(fù)制是一種辦法,通過代碼獲取,需要使用到Selenium,接下來的章節(jié)會講解,這里暫且不表。
分享到:
總結(jié)
以上是生活随笔為你收集整理的python模拟登录页面下载_Python爬虫实战入门四:使用Cookie模拟登录——获取电子书下载链接...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: bct是什么币种
- 下一篇: websocket python爬虫_p