python爬取vip小说章节_怎么用python爬sf轻小说文库的vip章节小说
展開(kāi)全部
你需要先購(gòu)買(mǎi)vip,不2113然的話是爬不了的,除非系5261統(tǒng)有漏洞,記4102住爬蟲(chóng)不是萬(wàn)能的
步驟一:研究1653該網(wǎng)站
打開(kāi)登錄頁(yè)面
進(jìn)入以下頁(yè)面 “”。你會(huì)看到如下圖所示的頁(yè)面(執(zhí)行注銷(xiāo),以防你已經(jīng)登錄)
仔細(xì)研究那些我們需要提取的詳細(xì)信息,以供登錄之用
在這一部分,我們會(huì)創(chuàng)建一個(gè)字典來(lái)保存執(zhí)行登錄的詳細(xì)信息:
1. 右擊 “Username or email” 字段,選擇“查看元素”。我們將使用 “name” 屬性為 “username” 的輸入框的值?!皍sername”將會(huì)是 key 值,我們的用戶名/電子郵箱就是對(duì)應(yīng)的 value 值(在其他的網(wǎng)站上這些 key 值可能是 “email”,“ user_name”,“ login”,等等)。
2. 右擊 “Password” 字段,選擇“查看元素”。在腳本中我們需要使用 “name” 屬性為 “password” 的輸入框的值?!皃assword” 將是字典的 key 值,我們輸入的密碼將是對(duì)應(yīng)的 value 值(在其他網(wǎng)站key值可能是 “userpassword”,“l(fā)oginpassword”,“pwd”,等等)。
3. 在源代碼頁(yè)面中,查找一個(gè)名為 “csrfmiddlewaretoken” 的隱藏輸入標(biāo)簽?!癱srfmiddlewaretoken” 將是 key 值,而對(duì)應(yīng)的 value 值將是這個(gè)隱藏的輸入值(在其他網(wǎng)站上這個(gè) value 值可能是一個(gè)名為 “csrftoken”,“ authenticationtoken” 的隱藏輸入值)。列如:“Vy00PE3Ra6aISwKBrPn72SFml00IcUV8”。
最后我們將會(huì)得到一個(gè)類(lèi)似這樣的字典:
payload = {
"username": "",
"password": "",
"csrfmiddlewaretoken": ""
}
請(qǐng)記住,這是這個(gè)網(wǎng)站的一個(gè)具體案例。雖然這個(gè)登錄表單很簡(jiǎn)單,但其他網(wǎng)站可能需要我們檢查瀏覽器的請(qǐng)求日志,并找到登錄步驟中應(yīng)該使用的相關(guān)的 key 值和 value 值。
步驟2:執(zhí)行登錄網(wǎng)站
對(duì)于這個(gè)腳本,我們只需要導(dǎo)入如下內(nèi)容:
import requests
from lxml import html
首先,我們要?jiǎng)?chuàng)建 session 對(duì)象。這個(gè)對(duì)象會(huì)允許我們保存所有的登錄會(huì)話請(qǐng)求。
session_requests = requests.session()
第二,我們要從該網(wǎng)頁(yè)上提取在登錄時(shí)所使用的 csrf 標(biāo)記。在這個(gè)例子中,我們使用的是 lxml 和 xpath 來(lái)提取,我們也可以使用正則表達(dá)式或者其他的一些方法來(lái)提取這些數(shù)據(jù)。
login_url = ""
result = session_requests.get(login_url)
tree = html.fromstring(result.text)
authenticity_token = list(set(tree.xpath("//input[@name='csrfmiddlewaretoken']/@value")))[0]
**更多關(guān)于xpath 和lxml的信息可以在這里找到。
接下來(lái),我們要執(zhí)行登錄階段。在這一階段,我們發(fā)送一個(gè) POST 請(qǐng)求給登錄的 url。我們使用前面步驟中創(chuàng)建的 payload 作為 data 。也可以為該請(qǐng)求使用一個(gè)標(biāo)題并在該標(biāo)題中給這個(gè)相同的 url 添加一個(gè)參照鍵。
result = session_requests.post(
login_url,
data = payload,
headers = dict(referer=login_url)
)
步驟三:爬取內(nèi)容
現(xiàn)在,我們已經(jīng)登錄成功了,我們將從 bitbucket dashboard 頁(yè)面上執(zhí)行真正的爬取操作。
url = ''
result = session_requests.get(
url,
headers = dict(referer = url)
)
為了測(cè)試以上內(nèi)容,我們從 bitbucket dashboard 頁(yè)面上爬取了項(xiàng)目列表。我們將再次使用 xpath 來(lái)查找目標(biāo)元素,清除新行中的文本和空格并打印出結(jié)果。如果一切都運(yùn)行 OK,輸出結(jié)果應(yīng)該是你 bitbucket 賬戶中的 buckets / project 列表。
Python
1
2
3
4
5
tree = html.fromstring(result.content)
bucket_elems = tree.findall(".//span[@class='repo-name']/")
bucket_names = [bucket.text_content.replace("n", "").strip() for bucket in bucket_elems]
print bucket_names
你也可以通過(guò)檢查從每個(gè)請(qǐng)求返回的狀態(tài)代碼來(lái)驗(yàn)證這些請(qǐng)求結(jié)果。它不會(huì)總是能讓你知道登錄階段是否是成功的,但是可以用來(lái)作為一個(gè)驗(yàn)證指標(biāo)。
例如:
Python
1
2
result.ok # 會(huì)告訴我們最后一次請(qǐng)求是否成功
result.status_code # 會(huì)返回給我們最后一次請(qǐng)求的狀態(tài)
就是這樣。
已贊過(guò)
已踩過(guò)<
你對(duì)這個(gè)回答的評(píng)價(jià)是?
評(píng)論
收起
總結(jié)
以上是生活随笔為你收集整理的python爬取vip小说章节_怎么用python爬sf轻小说文库的vip章节小说的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python高级面试题_10个高级pyt
- 下一篇: 为了看看程序员常用什么工具软件,我“黑”