python爬取小说基本信息_爬取小说(步骤三)python

假设各位老哥已经安装好了bs4 requests这些库了

这个小说是随便挑的,各位也就不用太介意(仅供各位学习)

python3 实现,网上用python2做爬虫的太多了,但用python3的还是比较少

爬取的链接是https://www.qu.la/book/12763/10664294.html

整合文章写入

没有看过 步骤一 的朋友们可以点击下面的链接看看步骤一先

点击查看步骤一

没有看过 步骤二 的朋友们可以点击下面的链接看看步骤二先

点击查看步骤二

步骤三:整合文章写入

基本实现小说爬取

通过随机数来模拟休息时间,避免被禁

缺点:必须要先用一个起始文章的链接来做(这个链接无所谓,反正读取的话,就是读取这个链接的文章作为起始点)

import requests

import time

import random

from bs4 import BeautifulSoup

begin_url = "https://www.qu.la/book/12763/10664294.html"

base = begin_url[:begin_url.rindex('/')+1]

urls = [begin_url] # 初始化url池

first = True

for url in urls:

req = requests.get(url)

req.encoding = 'utf-8'

soup = BeautifulSoup(req.text, 'html.parser')

try:

content = soup.find(id='content')

title = soup.find(attrs={"class": "bookname"})

title = title.find('h1').text

except:

break

string = content.text.replace('\u3000', '').replace('\t', '').replace('\n', '').replace('\r', '').replace(

'『', '“') .replace('』', '”').replace('\ufffd', '') # 去除不相关字符

string = string.split('\xa0') # 编码问题解决

string = list(filter(lambda x: x, string))

for i in range(len(string)):

string[i] = ' ' + string[i]

if "本站重要通知" in string[i]: # 去除文末尾注

t = string[i].index('本站重要通知')

string[i] = string[i][:t]

string = '\n'.join(string)

string = '\n' + title + '\n' + string

if first:

first = False

with open('E:/Code/Python/Project/txtGet/1.txt', 'w') as f:

f.write(string)

else:

with open('E:/Code/Python/Project/txtGet/1.txt', 'a') as f:

f.write(string)

print(title+' 写入完成')

next_ = soup.find(attrs={"class": "next"})

next_url = base + next_['href']

urls.append(next_url)

time.sleep(random.randint(1, 5)) # 别访问的太快了..担心被禁hhh也别访问的太死板了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值