Python制作爬蟲采集小說
開發(fā)工具:python3.4
操作系統(tǒng):win8
主要功能:去指定小說網(wǎng)頁爬小說目錄,按章節(jié)保存到本地,并將爬過的網(wǎng)頁保存到本地配置文件。
被爬網(wǎng)站:http://www.cishuge.com/
小說名稱:靈棺夜行
代碼出處:本人親自碼的
import urllib.request
import http.cookiejar
import socket
import time
import re
timeout = 20
socket.setdefaulttimeout(timeout)
sleep_download_time = 10
time.sleep(sleep_download_time)
def makeMyOpener(head = {
'Connection': 'Keep-Alive',
'Accept': 'text/html, application/xhtml+xml, */*',
'Accept-Language': 'en-US,en;q=0.8,zh-Hans-CN;q=0.5,zh-Hans;q=0.3',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko'
}):
cj = http.cookiejar.CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
header = []
for key, value in head.items():
elem = (key, value)
header.append(elem)
opener.addheaders = header
return opener
def saveFile(save_path,txts):
f_obj = open(save_path,'w+')
for item in txts:
f_obj.write(item+'\n')
f_obj.close()
#get_code_list
code_list='http://www.cishuge.com/read/0/771/'
oper = makeMyOpener()
uop = oper.open(code_list,timeout=1000)
data = uop.read().decode('gbk','ignore')
pattern = re.compile('<li><a href="(.*?)".*?>(.*?)</a></li>',re.S)
items = re.findall(pattern,data)
print ('獲取列表完成')
url_path='url_file.txt'
url_r=open(url_path,'r')
url_arr=url_r.readlines(100000)
url_r.close()
print (len(url_arr))
url_file=open(url_path,'a')
print ('獲取已下載網(wǎng)址')
for tmp in items:
save_path = tmp[1].replace(' ','')+'.txt'
url = code_list+tmp[0]
if url+'\n' in url_arr:
continue
print('寫日志:'+url+'\n')
url_file.write(url+'\n')
opene = makeMyOpener()
op1 = opene.open(url,timeout=1000)
data = op1.read().decode('gbk','ignore')
opene.close()
pattern = re.compile(' (.*?)<br />',re.S)
txts = re.findall(pattern,data)
saveFile(save_path,txts)
url_file.close()
雖然代碼還是有點(diǎn)瑕疵,還是分享給大家,一起改進(jìn)
相關(guān)文章
Python對(duì)ElasticSearch獲取數(shù)據(jù)及操作
這篇文章主要為大家詳細(xì)介紹了Python對(duì)ElasticSearch獲取數(shù)據(jù)及操作,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04
用python實(shí)現(xiàn)詞云效果實(shí)例介紹
大家好,本篇文章主要講的是用python實(shí)現(xiàn)詞云效果實(shí)例介紹,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下2022-01-01
Python3+OpenCV實(shí)現(xiàn)簡(jiǎn)單交通標(biāo)志識(shí)別流程分析
這篇文章主要介紹了Python3+OpenCV實(shí)現(xiàn)簡(jiǎn)單交通標(biāo)志識(shí)別,主要思路是解析XML文檔,根據(jù)<name>標(biāo)簽進(jìn)行分類,如果是直行、右轉(zhuǎn)、左轉(zhuǎn)、停止就把它從原圖中裁剪下來并重命名,感謝的朋友跟隨小編一起看看示例代碼2021-12-12
詳述numpy中的np.random.random()系列函數(shù)用法
本文主要介紹了詳述numpy中的np.random.random()系列函數(shù)用法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
python計(jì)算書頁碼的統(tǒng)計(jì)數(shù)字問題實(shí)例
這篇文章主要介紹了python計(jì)算書頁碼的統(tǒng)計(jì)數(shù)字問題實(shí)例,對(duì)比2個(gè)實(shí)例講述了數(shù)字統(tǒng)計(jì)的技巧,非常實(shí)用,需要的朋友可以參考下2014-09-09
Python3中多線程編程的隊(duì)列運(yùn)作示例
這篇文章主要介紹了Python3中多線程編程的隊(duì)列運(yùn)作示例,文中用一個(gè)簡(jiǎn)單的例子展示了Python下嘗試多線程時(shí)隊(duì)列的進(jìn)站出站是如何運(yùn)作的,需要的朋友可以參考下2015-04-04
Python+tkinter實(shí)現(xiàn)網(wǎng)站下載工具
這篇文章主要為大家詳細(xì)介紹了如何利用Python+tkinter實(shí)現(xiàn)網(wǎng)站下載工具,實(shí)現(xiàn)所有數(shù)據(jù)一鍵獲取,文中的示例代碼講解詳細(xì),感興趣的可以了解一下2023-03-03
解決Python正則表達(dá)式匹配反斜杠''''\''''問題
這篇文章主要介紹了Python正則表達(dá)式匹配反斜杠'\'問題 ,很多朋友在使用python 正則式的過程中,經(jīng)常被這個(gè)問題困擾,今天小編通過代碼給大家詳細(xì)介紹,需要的朋友可以參考下2019-07-07

