Python用物件導向的方式爬取小說

2021-09-01 23:01:57 字數 1843 閱讀 6749

昨天幫同學爬的一部**,現在把**放在部落格上希望也能幫到其他人

# -*- coding:utf-8 -*-

# @time: 2018/11/25 22:28

# @author: cen

import requests, re

from bs4 import beautifulsoup

class novelspider:

'''這是個爬取夢裡花落知多少**的類'''

def __init__(self):

self.index_url = '' # **主頁

# 請求頭,模擬瀏覽器登陸**

self.headers =

def geturllist(self, html):

'''這是乙個構造url列表的函式'''

# **主頁裡每個章節對應著每節的url,把這些章節的url存放到乙個列表中

reg = '(.*?)

' hrefs = re.findall(reg, html) # 用正規表示式匹配**每節的標題和url,

url_list = # 先建立乙個空列表

for href in hrefs:

return url_list # 函式最後返回乙個url列表

def gethtml(self, url):

'''這是乙個獲取url的html頁面內容的函式'''

# 這裡直接返回html頁面內容,網頁的編碼格式是gbk,所以我們解碼也應使用gbk

return requests.get(url, headers=self.headers).content.decode('gbk')

# 主函式

def main(self):

html = self.gethtml(self.index_url) # 呼叫gethtml函式並賦給變數html,從而獲取**主頁頁面內容

url_list = self.geturllist(html) # 將頁面內容html傳給函式geturllist,函式執行即生成的url列表存放在url_list這個變數中

# 因為url_list中每個元素是乙個元祖,像這樣('/view/38/38672/10577600.html', '文學小青年')

for url in url_list: # 用for迴圈遍歷列表,得到乙個個元組

title = url[1] # 標題在元組第二個位置,url在第乙個位置

# 因為得到的url並不是完整的,所以我們要拼接成完整的url

full_url = "" + url[0]

# print(title, full_url) # 這裡是列印一下標題和url,看下效果

novel_html = self.gethtml(full_url) # 這裡是獲取**的章節頁面內容

soup = beautifulsoup(novel_html, 'html.parser') # 用beautifulsoup解析頁面

content = soup.find(id='content').gettext() # 找到**內容位置,獲取**文字

# 儲存

print('正在儲存...%s' % title)

with open('《夢裡花落知多少》全集.doc', 'a', encoding='utf-8') as f:

f.write(title + content + '\n\n')

if __name__ == '__main__':

novel_spider = novelspider() # 例項化類為乙個物件

novel_spider.main() # 執行主函式

python物件導向 用函式實現物件導向原理

類的定義 乙個抽象的概念,儲存一些共有的屬性和特徵 物件 物件代表具體事物的特徵功能,是類的例項 物件導向程式設計 通過函式實現物件導向設計 defdog name,type,gender defjiao dog1 print 你看 s 狗再叫 dog1 name 函式的區域性作用域 defslee...

python物件導向方式 烤地瓜

以物件導向的方式分析烤地瓜 1.抽象類,在程式中定義類 定義地瓜類 定義人類 2.分析地瓜類的成員 2.1 屬性 烤地瓜的狀態,烤地瓜的時間,佐料列表屬性 2.2 方法 無 3.分析人類的成員 3.1 屬性 姓名,烤齡,性別 3.2 方法 烤地瓜的行為方法,新增佐料方法 人類 class perso...

物件導向的思維方式

第一,首先確定誰來著,其次確定怎麼做 對比一下c語言,c語言要實現乙個功能,比如說要求乙個數的平方根,只要呼叫乙個函式就可以求出來,但在物件導向裡面不是這樣,首先應該考慮的是,求平方根的這件事應該是誰的任務,或者說是由誰來著,其次考慮怎麼去做,這才是物件導向。第二,首先考慮整體,其次考慮區域性 我就...