昨天幫同學爬的一部**,現在把**放在部落格上希望也能幫到其他人
# -*- 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語言要實現乙個功能,比如說要求乙個數的平方根,只要呼叫乙個函式就可以求出來,但在物件導向裡面不是這樣,首先應該考慮的是,求平方根的這件事應該是誰的任務,或者說是由誰來著,其次考慮怎麼去做,這才是物件導向。第二,首先考慮整體,其次考慮區域性 我就...