91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-10-21 22:03:11 來源:腳本之家 閱讀:105 作者:Tynam.Yang 欄目:開發技術

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

需要用到的庫

  • from bs4 import BeautifulSoup
  • import requests
  • import time

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

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

獲取小說的每個章節的名稱和章節鏈接

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

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

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

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

獲取到鏈接和章節名后打開一個章節獲取文本內容;

和獲取章節名方法一致,一步一步查找到內容的位置

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)

獲取單一章節完成

接下來整理代碼,獲取整個小說的內容,代碼如下:

# --*-- 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 = [] # 存放章節名
    self.hrefs = [] # 存放章節鏈接

  def get_urlAndName(self):
    '''獲取章節名和章節鏈接'''
    req = requests.get(url=self.url+'List.aspx?NovelId=0326') # 獲取章節目錄頁面
    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') # 查找內容,標簽為div,屬性為class='user-catalog-ul-li'
    a_bf = BeautifulSoup(str(div))
    a = a_bf.find_all('a') # # 查找內容,標簽為a
    for i in a:
      self.names.append(i.find('span').string) # 獲取內容直接string就行
      self.hrefs.append(self.url + i.get('href')) # 獲取鏈接

  def get_text(self,url):
    '''獲取章節內容'''
    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') # 查找內容
    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 # 將獲得的內容返回

  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循環獲得所有的內容
    name = s.names[i]
    text = str(s.get_text(s.hrefs[i]))
    s.writer(name,"我以月夜寄相思.txt",text)
  print('下載完畢!!!')

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

靖江市| 临江市| 唐山市| 揭阳市| 菏泽市| 上饶县| 和林格尔县| 江山市| 阿鲁科尔沁旗| 仁寿县| 明星| 姜堰市| 宜章县| 辛集市| 邹城市| 合作市| 万荣县| 大庆市| 无棣县| 太康县| 清远市| 浏阳市| 沁阳市| 调兵山市| 高安市| 宜城市| 中阳县| 太原市| 公主岭市| 托克逊县| 永善县| 新乡县| 滦平县| 筠连县| 二手房| 祁东县| 蒙自县| 苏尼特右旗| 景谷| 嘉定区| 宜黄县|