這幾天刷華東oj的題,寫部落格還要複製html的**,感覺麻煩的一批,然後就去摸魚寫了個小爬蟲。。
輸入詳細的pid、cid或id即可爬取相應的html**
關鍵的還是登陸問題,程式需要在同資料夾下新增乙個「headers.csv」檔案用於更新和儲存cookie,內容包括瀏覽器標頭和cookie就好。也可以看我的。。。
程式提示需要輸入新的cookie時去瀏覽器登入一下把cookie複製進去就好。(什麼,你不知道cookie從哪找?那你知道羊駝為什麼會淹死嗎?)
importview coderequests
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)
中國石油大學華東資料結構實驗一
實驗一 線性表是最常見和常用的adt。假設線性表的元素為整數,請基於單鏈式儲存結構實現線性表adt。基本功能包括 1 建立線性表 輸入有兩行 第一行乙個整數,是輸入元素的結束標誌,例如0,則在輸入結束時輸入0,就表示輸入結束了。第二行是線性表的各個元素,最後乙個是結束標誌。2 插入 輸入兩個整數,即...
UPC 中國石油大學OJ AC百題留念。
不知不覺,從九月份入校,十月份開始接觸acm,到如今已然七個月份,二百餘天。在這些時日裡,有新生賽拿第一受到獎勵的甜,也有在面對其他高校的學員然後被吊打的苦悶,有ac的喜悅,也有無盡wa,tle的糾纏。現在回首望去,二百餘天就這麼悄然的從指間溜走了,悄然不覺。在這個僅幾平方公尺的小房間中,清洗自己,...
中國石油大學(北京) 《軟體工程》 答案
軟體工程 期末複習題及答案 一 單項選擇題 本大題共60小題,在每小題的四個備選答案中,選出乙個正確答案,並將正確答案填塗在答題卡上 1.軟體危機產生的主要原因是 a.軟體日益龐大b.不能與使用者良好地溝通 c.開發人員編寫程式能力差 d.沒有適應的開發模型 軟體工程的發展不包括以下那個階段 a.傳...