中國石油大學(華東)OJ題目的HTML爬取

2022-04-10 08:45:07 字數 2432 閱讀 6237

這幾天刷華東oj的題,寫部落格還要複製html的**,感覺麻煩的一批,然後就去摸魚寫了個小爬蟲。。

輸入詳細的pid、cid或id即可爬取相應的html**

關鍵的還是登陸問題,程式需要在同資料夾下新增乙個「headers.csv」檔案用於更新和儲存cookie,內容包括瀏覽器標頭和cookie就好。也可以看我的。。。

程式提示需要輸入新的cookie時去瀏覽器登入一下把cookie複製進去就好。(什麼,你不知道cookie從哪找?那你知道羊駝為什麼會淹死嗎?)

import

requests

from requests.exceptions import

requestexception

import

reimport

csv#

讀入headers

headers ={}

with open(

'headers.csv

', 'r'

) as f:

rawinfos =list(csv.reader(f))

for i in

rawinfos:

headers[i[0]] = i[1]

defget_one_page(url, headers):

#獲取頁面html

try:

response = requests.get(url, headers=headers)

if response.status_code == 200:

response.encoding = '

utf-8

'return

response.text

return

none

except

requestexception:

return

none

#選擇題目

flag = int(input("

是否為專題題目(0/1):"))

ifflag:

url = "

" + input("

專題(cid):

") + "

&pid=

" + input("

題號(pid):")

else

: url = "

" + input("

題號(id):")

#開始爬取

flag =false

html =get_one_page(url, headers)

while re.findall('

', html, re.s) != :#

玄學判斷cookie失效~

#如果cookie失效,要求重新輸入cookie

headers['

cookie

'] = input('

your cookie may lose efficacy, input again:')

html =get_one_page(url, headers)

flag =true

ifflag:

#輸入有效cookie後更改headers檔案

with open('

headers.csv

', 'w'

) as f:

writer =csv.writer(f)

for i in

headers:

data =

writer.writerow(data)

#正則處理html內容

aim = re.findall('

(.*?)',

html, re.s)

#匹配題目內容的html

rr1 = re.findall('

(.*?)

', aim[0], re.s)[0]#

正則匹配第乙個需要被刪掉的字串

rr2 = re.findall('

(.*?)

', aim[0], re.s)[0]#

正則匹配第二個需要被刪除的字串

tmp =aim[0]

#開始刪除

tmp = tmp.replace("

" + rr1 + "

", ''

)tmp = tmp.replace(rr2, '')#

輸出處理好的html內容

print(tmp)

view code

中國石油大學華東資料結構實驗一

實驗一 線性表是最常見和常用的adt。假設線性表的元素為整數,請基於單鏈式儲存結構實現線性表adt。基本功能包括 1 建立線性表 輸入有兩行 第一行乙個整數,是輸入元素的結束標誌,例如0,則在輸入結束時輸入0,就表示輸入結束了。第二行是線性表的各個元素,最後乙個是結束標誌。2 插入 輸入兩個整數,即...

UPC 中國石油大學OJ AC百題留念。

不知不覺,從九月份入校,十月份開始接觸acm,到如今已然七個月份,二百餘天。在這些時日裡,有新生賽拿第一受到獎勵的甜,也有在面對其他高校的學員然後被吊打的苦悶,有ac的喜悅,也有無盡wa,tle的糾纏。現在回首望去,二百餘天就這麼悄然的從指間溜走了,悄然不覺。在這個僅幾平方公尺的小房間中,清洗自己,...

中國石油大學(北京) 《軟體工程》 答案

軟體工程 期末複習題及答案 一 單項選擇題 本大題共60小題,在每小題的四個備選答案中,選出乙個正確答案,並將正確答案填塗在答題卡上 1.軟體危機產生的主要原因是 a.軟體日益龐大b.不能與使用者良好地溝通 c.開發人員編寫程式能力差 d.沒有適應的開發模型 軟體工程的發展不包括以下那個階段 a.傳...