Python爬虫抓取小说内容——20180314
2018-03-14 19:39
387 查看
首先,在这个日子,让我为科学巨星——霍金哀悼!一路走好!
该文章主要为我个人对Jack Gui的小说爬虫代码的理解,侵删。
原作者网址:http://cuijiahua.com/blog/2017/10/spider_tutorial_1.html# WARNING:以下所有注释均为个人理解,仅供参考!不具有权威性!
# -*- coding: UTF-8 -*-
from bs4 import BeautifulSoup
import requests,sys
#定义一个下载的类
class downloader(object):
def __init__(self):
self.server = 'http://www.biqukan.com/'
self.target = 'http://www.biqukan.com/1_1094/'
self.names = [] #存放各章节名称
self.urls = [] #存放各章节地址(url)
self.nums = 0 #存放章节数目
#获得各章节的URL
def get_download_url(self):
req = requests.get(url = self.target) #根据当前url获得网页回应
html = req.text #获取回应中的HTML内容
div_bf = BeautifulSoup(html,'html.parser') #利用BS函数对HTMl内容进行处理,具体请参照BS函数用法:http://beautifulsoup.readthedocs.io/zh_CN/latest/
div = div_bf.find_all('div',class_ = 'listmain') #获得html中class=’listmain'的div部分
a_bf = BeautifulSoup(str(div[0]),'html.parser') #获取div[0]部分的内容并对其进行处理
a = a_bf.find_all('a') #获取div[0]中a的部分
self.nums = len(a[15:]) #去除前15个章节
for each in a[15:]: #将章节名称和URL导入
self.names.append(each.string)
self.urls.append(self.server + each.get('href'))#each.get('href')获取a中包含的相对地址
#通过URL抓取各章节内容
def get_contents(self, target):
req = requests.get(url = target) #获取网页回应
html = req.text #获取此章节html内容
bf = BeautifulSoup(html,'html.parser') #进行处理
texts = bf.find_all('div',class_ = 'showtxt') #获得showtxt部分(通过分析网页的源代码发现小说内容在showtxt中)
texts = texts[0].text.replace('\xa0'*8,'\n\n') #删除段落中的8个空格
return texts
#将小说内容写入文件
def writer(self, name, path, text): #name为章节名,path为文件路径(名)
with open(path, 'a', encoding='utf-8') as f:
f.write(name + '\n') #写入该章节名称
f.writelines(text) #写入该章节内容(writelines为写入list)
f.write('\n\n')
if __name__ == '__main__':
dl = downloader()
dl.get_download_url()
print('《一念永恒》开始下载:')
for i in range(dl.nums):
dl.writer(dl.names[i],'一念永恒.txt',dl.get_contents(dl.urls[i]))
sys.stdout.write(" 已下载:%.3f%%" % float(i/dl.nums*100) + '\r')
sys.stdout.flush()
print('《一念永恒》下载完成')
该文章主要为我个人对Jack Gui的小说爬虫代码的理解,侵删。
原作者网址:http://cuijiahua.com/blog/2017/10/spider_tutorial_1.html# WARNING:以下所有注释均为个人理解,仅供参考!不具有权威性!
# -*- coding: UTF-8 -*-
from bs4 import BeautifulSoup
import requests,sys
#定义一个下载的类
class downloader(object):
def __init__(self):
self.server = 'http://www.biqukan.com/'
self.target = 'http://www.biqukan.com/1_1094/'
self.names = [] #存放各章节名称
self.urls = [] #存放各章节地址(url)
self.nums = 0 #存放章节数目
#获得各章节的URL
def get_download_url(self):
req = requests.get(url = self.target) #根据当前url获得网页回应
html = req.text #获取回应中的HTML内容
div_bf = BeautifulSoup(html,'html.parser') #利用BS函数对HTMl内容进行处理,具体请参照BS函数用法:http://beautifulsoup.readthedocs.io/zh_CN/latest/
div = div_bf.find_all('div',class_ = 'listmain') #获得html中class=’listmain'的div部分
a_bf = BeautifulSoup(str(div[0]),'html.parser') #获取div[0]部分的内容并对其进行处理
a = a_bf.find_all('a') #获取div[0]中a的部分
self.nums = len(a[15:]) #去除前15个章节
for each in a[15:]: #将章节名称和URL导入
self.names.append(each.string)
self.urls.append(self.server + each.get('href'))#each.get('href')获取a中包含的相对地址
#通过URL抓取各章节内容
def get_contents(self, target):
req = requests.get(url = target) #获取网页回应
html = req.text #获取此章节html内容
bf = BeautifulSoup(html,'html.parser') #进行处理
texts = bf.find_all('div',class_ = 'showtxt') #获得showtxt部分(通过分析网页的源代码发现小说内容在showtxt中)
texts = texts[0].text.replace('\xa0'*8,'\n\n') #删除段落中的8个空格
return texts
#将小说内容写入文件
def writer(self, name, path, text): #name为章节名,path为文件路径(名)
with open(path, 'a', encoding='utf-8') as f:
f.write(name + '\n') #写入该章节名称
f.writelines(text) #写入该章节内容(writelines为写入list)
f.write('\n\n')
if __name__ == '__main__':
dl = downloader()
dl.get_download_url()
print('《一念永恒》开始下载:')
for i in range(dl.nums):
dl.writer(dl.names[i],'一念永恒.txt',dl.get_contents(dl.urls[i]))
sys.stdout.write(" 已下载:%.3f%%" % float(i/dl.nums*100) + '\r')
sys.stdout.flush()
print('《一念永恒》下载完成')
相关文章推荐
- Python使用Srapy框架爬虫模拟登陆并抓取知乎内容
- Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容
- python爬虫之使用urllib2组件抓取网页内容
- Python简易爬虫--抓取任意数目百度百科内容
- 抓取糗百内容小爬虫(python2.7) 2015最新版
- 第五课 Python爬虫抓取新浪新闻的内容页
- python 爬虫,抓取小说
- Python 小说内容抓取
- 第三百四十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—编写spiders爬虫文件循环抓取内容—meta属性返回指定值给回调函数—Scrapy内置图片下载器
- python爬虫抓取晋江网一篇小说
- Python 小说内容抓取
- Python3学习(34)--简单网页内容抓取(爬虫入门一)
- 萌新的Python学习日记 - 爬虫无影 - 使用BeautifulSoup + css selector 抓取自己想要网页内容
- 零基础写python爬虫之使用urllib2组件抓取网页内容
- Python使用Srapy框架爬虫模拟登陆并抓取知乎内容
- Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容
- Python 简易网络爬虫的编写——抓取任意页面数目百度百科内容
- Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容
- python爬虫-->抓取动态内容
- Python爬虫实战一之使用Beautiful Soup抓取‘谣言百科’的分类内容