0%

笔趣网整本小说爬取

使用python对笔趣网小说进行逐页爬取。

前言

这个网站的下载链接奇慢无比,闲来无事,使用python对其进行循环爬取。

以下是本篇文章正文内容,下面案例可供参考

一、页面分析


很显然,这是书籍的详情页,我们在这个页面只需要两种数据,一个就是我们的书籍名称,还有就是对应章节的详情链接,只有获取了章节的详情链接我们才可以进行文字的爬取。


可以看出来这个界面很简单,也没什么反爬措施,轻而易举获得我们想要的数据。

这里唯一要注意的就是获取的文字内容是list,我们需要在其中进行再遍历。
然后替换其中的换行之类的无用字符,最后写入到txt文件中。

二、代码编写

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import requests
import random
from fake_useragent import UserAgent
from lxml import etree

# 代理池
proxy_pool = [{'HTTP': '175.42.129.251:9999'}, {'HTTP': '175.43.156.31:9999'}, {'HTTP': '175.43.58.14:9999'},
{'HTTP': '120.84.101.48:9999'}, {'HTTP': '223.247.164.191:9999'}, {'HTTP': '182.46.121.25:9999'},
{'HTTP': '115.221.245.116:9999'}, {'HTTP': '58.22.177.192:9999'}]


# 爬虫类
class BiQuSpider:
# 初始化类中成员
def __init__(self, url):
print('正在初始化...')
self.url = url
self.headers = {
"Referer": url,
'User-Agent': UserAgent().random
}
self.bookName = None
self.url_pool = []

# 获取章节链接
def get_urls(self):
response = requests.get(url=self.url, headers=self.headers, proxies=random.choice(proxy_pool))
result = etree.HTML(response.content.decode())
title = result.xpath('//div[@id="info"]/h1/text()')[0]
self.bookName = title
urls = result.xpath('//div[@class="book_list"]/ul/li')
for i in urls:
url = 'http://www.biquw.com/book/94/' + i.xpath('./a/@href')[0]
self.url_pool.append(url)
print('章节链接爬取完毕...')

# 文本内容解析处理
def get_text(self):
for url in self.url_pool:
data = []
content_page = requests.get(url=url, headers=self.headers, proxies=random.choice(proxy_pool))
result = etree.HTML(content_page.content.decode())
content = result.xpath('//div[@id="htmlContent"]')[0]
title = result.xpath('//div[@class="h1title"]/h1/text()')[0]
print('正在爬取{}'.format(title))
for t in content.xpath('./text()'):
text = t.replace("\n", "").replace("\xa0", "")
if text:
data.append(' ' + text)
txt = '\n'.join(data)
with open('./{}.txt'.format(self.bookName), 'a', encoding='utf-8') as w:
w.write(title + '\n' + txt + '\n\n')

# 运行 调用方法
def run(self):
self.get_urls()
self.get_text()


if __name__ == '__main__':
spider = BiQuSpider('http://www.biquw.com/book/94/')
spider.run()

结果

本文标题:笔趣网整本小说爬取

文章作者:fanchen

发布时间:2021年01月17日 - 15:27:59

最后更新:2021年02月05日 - 17:57:02

原始链接:http://88fanchen.github.io/posts/cf49fdc5/

许可协议:署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。