成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Python實(shí)現(xiàn)的爬取小說(shuō)爬蟲(chóng)功能示例-創(chuàng)新互聯(lián)

本文實(shí)例講述了Python實(shí)現(xiàn)的爬取小說(shuō)爬蟲(chóng)功能。分享給大家供大家參考,具體如下:

大悟ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話(huà)聯(lián)系或者加微信:18982081108(備注:SSL證書(shū)合作)期待與您的合作!

想把頂點(diǎn)小說(shuō)網(wǎng)上的一篇持續(xù)更新的小說(shuō)下下來(lái),就寫(xiě)了一個(gè)簡(jiǎn)單的爬蟲(chóng),可以爬取爬取各個(gè)章節(jié)的內(nèi)容,保存到txt文檔中,支持持續(xù)更新保存。需要配置一些信息,設(shè)置文檔保存路徑,書(shū)名等。寫(xiě)著玩,可能不大規(guī)范。

# coding=utf-8
import requests
from lxml import etree
from urllib.parse import urljoin
import re
import os
# 獲取頁(yè)面,并返回解析整理好的文本
def get_page(url):
  response = requests.get(url, headers=header)
  set_encoding(response)
  text = parse_page(response.text)
  return text
# 解析頁(yè)面,將當(dāng)前頁(yè)面中的文字篩選出來(lái)
def parse_page(html):
  title = re.findall('<div class="bookname">\s+<h2>(.+?)</h2>', html)[0]
  content = re.findall('div id="content">(.*?)</div>', html, re.S)[0]
  content = content.replace('<br />', '').replace(' ', ' ').replace('\r\n\r\n', '\r\n')
  content = title + '\r\n' + content + '\r\n\r\n'
  return content
# 將文本追加到file_path對(duì)應(yīng)的txt中
def save_page(path, text):
  with open(path, 'a', encoding='utf-8') as f:
    f.write(text)
# 設(shè)置對(duì)response得到文本的解析編碼為'gbk'
def set_encoding(response):
  response.encoding = 'gbk'
# 從配置文件中獲取當(dāng)前保存的鏈接總數(shù)
def get_current_chapters_count(path):
  # (1)第一次讀配置文件可能沒(méi)有創(chuàng)建,所以要支持沒(méi)有文件創(chuàng)建文件的功能(2)如果文件存在,則不能清空,參考https://www.jb51.net/article/158740.htm
  with open(path, 'a+') as f:
    f.seek(0)
    res = f.read()
    if res == '':
      return 0
    else:
      return int(res)
# 將保存的鏈接總數(shù)保存到配置文件中
def set_current_chapters_count(path, count):
  with open(path, 'w') as f:
    f.write(str(count))
# 需要配置的字典
config_dic = dict(start_url='http://www.booktxt.net/2_2220/', # 待下載小說(shuō)的章節(jié)首頁(yè) 
         latest_item=9, # 列出的所有章節(jié)鏈接中,前面幾個(gè)鏈接為最新章節(jié),一般為9個(gè),爬取時(shí)避免與最后部分重復(fù),所以前面9個(gè)鏈接不爬取
         bookname='贅婿', # 待下載的小說(shuō)名 
         folder_path='D:\\') #保存位置
domain = 'http://www.booktxt.net' # 頂點(diǎn)網(wǎng)域名
if __name__ == '__main__':
  chapter_url_list = []
  response = requests.get(config_dic['start_url'], headers=header)
  set_encoding(response)
  html = etree.HTML(response.text)
  chapters = html.xpath('//dd')
  print('所有鏈接' + str(len(chapters)))
  chapters = chapters[config_dic['latest_item']:] # 前9章為最新章節(jié),后面還會(huì)重復(fù),這里去掉
  print('不重復(fù)有效章節(jié)鏈接' + str(len(chapters)))
  folder_path = config_dic['folder_path'] + config_dic['bookname']
  if not os.path.exists(folder_path):
    os.mkdir(folder_path)
  file_path = folder_path + '\\' + config_dic['bookname'] + '.txt'
  config_file_path = folder_path + '\\' + 'config.txt'
  print('小說(shuō)存儲(chǔ)路徑為:' + file_path)
  print('配置文件存儲(chǔ)路徑為:' + config_file_path)
  saved_count = get_current_chapters_count(config_file_path) # 獲取目前保存的小說(shuō)中已經(jīng)包含的章節(jié)數(shù)
  print('當(dāng)前' + file_path + '中已經(jīng)保存的章節(jié)總數(shù)' + str(saved_count))
  if saved_count < len(chapters): # 說(shuō)明有更新
    set_current_chapters_count(config_file_path, len(chapters))
    print('共更新 ' + str(len(chapters) - saved_count) + ' 章')
    for c in chapters[saved_count:]: # 從上次保存的位置開(kāi)始繼續(xù)保存
      url = c.xpath('a/@href')[0]
      url = urljoin(domain, url)
      txt = c.xpath('a/text()')[0]
      chapter_url_list.append(url)
      print(url)
      print(txt)
      save_page(file_path, get_page(url))
  else:
    print('小說(shuō)還沒(méi)有更新哦')

分享標(biāo)題:Python實(shí)現(xiàn)的爬取小說(shuō)爬蟲(chóng)功能示例-創(chuàng)新互聯(lián)
轉(zhuǎn)載注明:http://jinyejixie.com/article44/ccpehe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開(kāi)發(fā)、網(wǎng)站策劃域名注冊(cè)、網(wǎng)站維護(hù)靜態(tài)網(wǎng)站、品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

營(yíng)銷(xiāo)型網(wǎng)站建設(shè)
牙克石市| 温宿县| 家居| 嵩明县| 内黄县| 中西区| 深水埗区| 合江县| 和田县| 陆良县| 彭山县| 连平县| 勃利县| 神池县| 凉山| 雷山县| 新邵县| 通河县| 哈巴河县| 淮滨县| 宜兰县| 苏尼特左旗| 株洲县| 汤原县| 巴彦淖尔市| 苗栗市| 绿春县| 宽城| 抚顺市| 浦东新区| 仁怀市| 天长市| 建德市| 河北区| 丽江市| 邹城市| 安仁县| 襄垣县| 武安市| 石渠县| 唐海县|