利用三十行Python爬取网络小说


利用三十行Python爬取网络小说


今天朋友问我有没有网站可以下载小说,我说没有啊 你要找哪个小说(心里有点鄙视他 ,心想现在什么小说在网上不是都能找到吗,自信搜索能力的我准备帮人帮到底)他说,《医圣之最强狂兵》,我当然没看过了,搜索了半天只找到了一些人分享的网盘地址,点进去发现里面只有前几章的txt,——预知后事如何请加下面VX….$%#^%&^&&a

我一脸天真的加了一下,还以为是只想凑点击率和关注量的分享小说的公众号,结果是个人账号,对,就如你所想,六块钱红包她就会发给我小说。算了吧,有那钱干点啥不好,自己又不是不会爬虫。

于是随手写了下面的程序。

网站如下:

利用三十行Python爬取网络小说


# -*- coding: utf-8 -*-
from bs4 import BeautifulSoup
import requests
import codecs
def get_url_list(url):
html = requests.get(url)
soup = BeautifulSoup(html.content, 'lxml')#content如果换成text会有乱码
url_list = []
list = soup.select("#list > dl > dd > a")
for i in list:
i = i.get("href")
i = 'http://www.biqugecom.com' + i
url_list.append(i)
url_list = url_list[9:-1]
print url_list
return url_list
def get_data(url):
html = requests.get(url)
soup = BeautifulSoup(html.content, 'lxml')
fo = codecs.open('output.txt', 'a+', 'utf-8');
# 以二进制写入章节题目 需要转换为utf-8编码,否则会出现乱码
section_name = soup.select("#wrapper > div.content_read > div > div.bookname > h1")[0].text
print section_name
fo.write(('\r\n' + section_name + '\r\n'))
section_text = soup.select("#content")
for x in section_text:
a = x.text.replace('readx();', '').replace('www.biqugecom.com/20/20341/', '')
fo.write((a)+ '\r\n')
# 以二进制写入章节内容
fo.close() # 关闭小说文件
if '__main__' == __name__:
url = 'http://www.biqugecom.com/34/34055/'
url_list = get_url_list(url)
for n in url_list:
get_data (n)