最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實(shí)現(xiàn)的爬取小說(shuō)爬蟲功能示例

 更新時(shí)間:2019年03月30日 12:53:12   作者:陽(yáng)光Cherry夢(mèng)  
這篇文章主要介紹了Python實(shí)現(xiàn)的爬取小說(shuō)爬蟲功能,結(jié)合實(shí)例形式分析了Python爬取頂點(diǎn)小說(shuō)站上的小說(shuō)爬蟲功能相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下

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

想把頂點(diǎn)小說(shuō)網(wǎng)上的一篇持續(xù)更新的小說(shuō)下下來(lái),就寫了一個(gè)簡(jiǎn)單的爬蟲,可以爬取爬取各個(gè)章節(jié)的內(nèi)容,保存到txt文檔中,支持持續(xù)更新保存。需要配置一些信息,設(shè)置文檔保存路徑,書名等。寫著玩,可能不大規(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+<h1>(.+?)</h1>', 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)如果文件存在,則不能清空,參考http://m.fzitv.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)有更新哦')

更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python Socket編程技巧總結(jié)》、《Python正則表達(dá)式用法總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • python pdfkit 中文亂碼問(wèn)題的解決方案

    python pdfkit 中文亂碼問(wèn)題的解決方案

    這篇文章主要介紹了python pdfkit 中文亂碼問(wèn)題的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • pytorch中的weight-initilzation用法

    pytorch中的weight-initilzation用法

    這篇文章主要介紹了pytorch中的weight-initilzation用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • Python Jupyter Notebook顯示行數(shù)問(wèn)題的解決

    Python Jupyter Notebook顯示行數(shù)問(wèn)題的解決

    這篇文章主要介紹了Python Jupyter Notebook顯示行數(shù)問(wèn)題的解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Python實(shí)現(xiàn)音頻去廣告和字幕提取

    Python實(shí)現(xiàn)音頻去廣告和字幕提取

    這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)音頻去廣告和字幕提取功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-02-02
  • Python中標(biāo)準(zhǔn)庫(kù)OS的常用方法總結(jié)大全

    Python中標(biāo)準(zhǔn)庫(kù)OS的常用方法總結(jié)大全

    python中的OS庫(kù)提供了使用各種操作系統(tǒng)功能的接口。是經(jīng)常用到的一個(gè)庫(kù),所以這篇文章主要給大家總結(jié)介紹了關(guān)于Python中標(biāo)準(zhǔn)庫(kù)OS的常用方法,文中給出了詳細(xì)的示例代碼供大家參考學(xué)習(xí),需要的朋友們下面來(lái)一起看看吧。
    2017-07-07
  • Python實(shí)現(xiàn)PS圖像調(diào)整顏色梯度效果示例

    Python實(shí)現(xiàn)PS圖像調(diào)整顏色梯度效果示例

    這篇文章主要介紹了Python實(shí)現(xiàn)PS圖像調(diào)整顏色梯度效果,結(jié)合實(shí)例形式分析了Python實(shí)現(xiàn)PS圖像調(diào)整中顏色梯度的原理與相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • Python中bisect的用法

    Python中bisect的用法

    這篇文章主要介紹了Python中bisect的用法,主要講述了針對(duì)數(shù)組的插入及排序操作,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-09-09
  • Python爬蟲獲取基金列表

    Python爬蟲獲取基金列表

    這篇文章主要介紹了Python爬蟲獲取基金列表,python爬蟲用來(lái)收集數(shù)據(jù)是最直接和常用的方法,可以使用python爬蟲程序獲得大量的數(shù)據(jù),下文更多相關(guān)內(nèi)容介紹,需要的小伙伴可以參考一下
    2022-05-05
  • django表單中的按鈕獲取數(shù)據(jù)的實(shí)例分析

    django表單中的按鈕獲取數(shù)據(jù)的實(shí)例分析

    在本篇文章里小編給大家詳解了關(guān)于django表單中的按鈕獲取數(shù)據(jù)的內(nèi)容,需要的朋友們可以參考下。
    2020-07-07
  • python去除字符串中空格的6種常用方法

    python去除字符串中空格的6種常用方法

    最近業(yè)務(wù)需要對(duì)Pyhon中的一些字符串內(nèi)容去除空格,方便后續(xù)處理,下面這篇文章主要給大家介紹了關(guān)于python去除字符串中空格的6種常用方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05

最新評(píng)論

辉南县| 连城县| 万源市| 巴里| 枝江市| 临汾市| 石渠县| 十堰市| 榆树市| 都匀市| 神农架林区| 襄汾县| 兴宁市| 东海县| 惠来县| 高邮市| 东明县| 简阳市| 德格县| 曲麻莱县| 台州市| 从江县| 阿鲁科尔沁旗| 崇左市| 金山区| 运城市| 临安市| 汉中市| 墨竹工卡县| 乾安县| 大化| 广宗县| 道真| 镇巴县| 武城县| 安岳县| 新建县| 邢台市| 博罗县| 运城市| 蕲春县|