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

Python爬取365好書中小說代碼實例

 更新時間:2020年02月28日 13:44:47   作者:Tynam.Yang  
這篇文章主要介紹了Python爬取365好書中小說代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

要轉載的小伙伴轉載后請注明轉載的地址

需要用到的庫

  • from bs4 import BeautifulSoup
  • import requests
  • import time

365好書鏈接:http://www.365haoshu.com/ 爬取《我以月夜寄相思》小說

首頁進入到目錄:http://www.365haoshu.com/Book/Chapter/List.aspx?NovelId=3026

獲取小說的每個章節(jié)的名稱和章節(jié)鏈接

打開瀏覽器的開發(fā)者工具,查找一個章節(jié):如下圖,找到第一章的名稱和href(也就是第一章節(jié)內(nèi)容頁面的鏈接),開始寫代碼

from bs4 import BeautifulSoup 
import requests
import time
# 分別導入time、requests、BeautifulSoup庫

url = 'http://www.365haoshu.com/Book/Chapter/'
# 鏈接地址url,這兒url章節(jié)鏈接沒全寫出來是因為下面獲取章節(jié)鏈接時要用到這些url
req = requests.get(url+'List.aspx?NovelId=0326')
# 打開章節(jié)頁面,
req_bf = BeautifulSoup(req.text,"html.parser")
print(req_bf)
# 將打開的頁面以text打印出來
div = req_bf.find_all('div',class_='user-catalog-ul-li')
# 分析頁面,所需要的章節(jié)名和章節(jié)鏈接是在div標簽,屬性class為user-catalog-ul-li下
# 找到這個下的內(nèi)容,并打印
s = []
for d in div:
  s.append(d.find('a'))
print(s)
# 獲取div下面的a標簽下的內(nèi)容
names=[] # 存儲章節(jié)名
hrefs=[] # 存儲章節(jié)鏈接
for i in s:
  names.append(i.find('span').string)
  hrefs.append(url + i.get('href'))
# 將所有的章節(jié)和章節(jié)鏈接存入的列表中
觀察href后的鏈接和打開章節(jié)內(nèi)容頁面的鏈接是不完全的相同的, 所以要拼接使得瀏覽器能直接打開章節(jié)內(nèi)容

獲取到鏈接和章節(jié)名后打開一個章節(jié)獲取文本內(nèi)容;

和獲取章節(jié)名方法一致,一步一步查找到內(nèi)容的位置

txt = requests.get(hrefs[0])
div_bf = BeautifulSoup(txt.text,'html.parser')
div = div_bf.find_all('div',class_='container user-reading-online pos-rel')
#print(div)
ps = BeautifulSoup(str(div),"html.parser")
p=ps.find_all('p',class_='p-content')
print(p)
txt=[]
for i in p:
  txt.append(i.string+'\n')
print(txt)

獲取單一章節(jié)完成

接下來整理代碼,獲取整個小說的內(nèi)容,代碼如下:

# --*-- coding=utf-8 --*--

from bs4 import BeautifulSoup
import requests
import time


class spiderstory(object):

  def __init__(self): # 初始化
    self.url = 'http://www.365haoshu.com/Book/Chapter/'
    self.names = [] # 存放章節(jié)名
    self.hrefs = [] # 存放章節(jié)鏈接

  def get_urlAndName(self):
    '''獲取章節(jié)名和章節(jié)鏈接'''
    req = requests.get(url=self.url+'List.aspx?NovelId=0326') # 獲取章節(jié)目錄頁面
    time.sleep(1) # 等待1秒
    div_bf = BeautifulSoup(req.text,"html.parser") # req后面跟text和html都行
    div = div_bf.find_all('div', class_='user-catalog-ul-li') # 查找內(nèi)容,標簽為div,屬性為class='user-catalog-ul-li'
    a_bf = BeautifulSoup(str(div))
    a = a_bf.find_all('a') # # 查找內(nèi)容,標簽為a
    for i in a:
      self.names.append(i.find('span').string) # 獲取內(nèi)容直接string就行
      self.hrefs.append(self.url + i.get('href')) # 獲取鏈接

  def get_text(self,url):
    '''獲取章節(jié)內(nèi)容'''
    req = requests.get(url=url)
    div_bf = BeautifulSoup(req.text,"html.parser")
    div = div_bf.find_all('div', class_='container user-reading-online pos-rel') # 查找內(nèi)容
    ps = BeautifulSoup(str(div), "html.parser")
    p = ps.find_all('p', class_='p-content')
    text = []
    for each in p:
      text.append(each.string)
    print(text)

    return text # 將獲得的內(nèi)容返回

  def writer(self, name, path, text):
    '''寫入text文檔中'''
    with open(path, 'a', encoding='utf-8') as f:
      f.write(name + '\n')
      f.writelines(text)
      f.write('\n\n')
if __name__ == "__main__": # 運行入口
  s = spiderstory()
  s.get_urlAndName()
  le = len(s.names)
  for i in range(le): # 利用for循環(huán)獲得所有的內(nèi)容
    name = s.names[i]
    text = str(s.get_text(s.hrefs[i]))
    s.writer(name,"我以月夜寄相思.txt",text)
  print('下載完畢?。?!')

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 基python實現(xiàn)多線程網(wǎng)頁爬蟲

    基python實現(xiàn)多線程網(wǎng)頁爬蟲

    python是支持多線程的, 主要是通過thread和threading這兩個模塊來實現(xiàn)的,本文主要給大家分享python實現(xiàn)多線程網(wǎng)頁爬蟲,需要的朋友可以參考下
    2015-09-09
  • python單例模式的應用場景實例講解

    python單例模式的應用場景實例講解

    在本篇文章里小編給大家整理的是一篇關于python單例模式的應用場景實例講解內(nèi)容,有興趣的朋友們可以學習下。
    2021-02-02
  • conda下載各種包時如何避免版本不匹配問題

    conda下載各種包時如何避免版本不匹配問題

    在使用python和conda時,由于Python版本不匹配,可能會導致一些問題的出現(xiàn),本文主要介紹了conda下載各種包時如何避免版本不匹配問題,感興趣的可以了解一下
    2024-03-03
  • python小技巧——將變量保存在本地及讀取

    python小技巧——將變量保存在本地及讀取

    這篇文章主要介紹了python小技巧——如何將變量保存在本地及讀取,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-11-11
  • TensorFlow實現(xiàn)數(shù)據(jù)增強的示例代碼

    TensorFlow實現(xiàn)數(shù)據(jù)增強的示例代碼

    ?TensorFlow數(shù)據(jù)增強?是一種通過變換和擴充訓練數(shù)據(jù)的方法,本文主要介紹了TensorFlow實現(xiàn)數(shù)據(jù)增強的示例代碼,具有一定的參考價值,感興趣的可以了解游戲
    2024-08-08
  • Python封裝解構以及丟棄變量

    Python封裝解構以及丟棄變量

    這篇文章主要介紹了Python封裝解構以及丟棄變量,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-09-09
  • 詳解讓Python性能起飛的15個技巧

    詳解讓Python性能起飛的15個技巧

    Python?一直以來被大家所詬病的一點就是執(zhí)行速度慢,但不可否認的是?Python?依然是我們學習和工作中的一大利器。本文總結了15個tips有助于提升?Python?執(zhí)行速度、優(yōu)化性能,需要的可以參考一下
    2022-02-02
  • Tensorflow之MNIST CNN實現(xiàn)并保存、加載模型

    Tensorflow之MNIST CNN實現(xiàn)并保存、加載模型

    這篇文章主要為大家詳細介紹了Tensorflow之MNIST CNN實現(xiàn)并保存、加載模型,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • Python利用3D引擎寫一個Pong游戲

    Python利用3D引擎寫一個Pong游戲

    之前,我們嘗試過用pygame做了一個2D的Pong游戲。本文將利用強大的3D引擎Ursina制作一個3D版的Pong游戲。文中的示例代碼講解詳細,感興趣的可以了解一下
    2023-01-01
  • Python自動化辦公之清理重復文件詳解

    Python自動化辦公之清理重復文件詳解

    這篇文章主要為大家詳細介紹了如何利用Python清理重復的文件,文中的示例代碼講解詳細,對我們學習Python有一定幫助,需要的可以參考一下
    2022-05-05

最新評論

石嘴山市| 乌鲁木齐县| 建宁县| 和平区| 通山县| 九江县| 涟源市| 全椒县| 四平市| 都江堰市| 新竹市| 瓦房店市| 昌宁县| 花莲县| 长春市| 南康市| 嘉义市| 阿巴嘎旗| 吴堡县| 吴江市| 获嘉县| 沙河市| 金坛市| 安图县| 哈尔滨市| 巴青县| 乌拉特前旗| 会宁县| 大田县| 本溪市| 阿鲁科尔沁旗| 特克斯县| 广元市| 托克逊县| 梅河口市| 嫩江县| 汾西县| 石狮市| 黑山县| 称多县| 渭南市|