python小白爬虫小说

python小白爬虫小说

1:说明

当我们新手小白进入到爬虫的初学者阶段时,有一定的爬虫知识储备,就想着爬点什么东西来练手,又没有什么好的指导,这里看完那里看,这里也不是老师教的类型那里也不是,那么好的机会不久来了嘛。

2:步入

当你看到这篇文章时,说明你已经有了一定的爬虫知识,那么对网页的分析也有了一定的了解,这里就不细细简介了。本次我们要爬的网站是:丛横中文网
我们从中任意选择一篇你喜欢的文章
获取他的url

3:代码

接下来就是代码的书写

# 首先导入我们必须要的库
import requests
from bs4 import BeautifulSoup
# 此处是请求头的完善
headers = {
***#此处省略
}

# 这是我们要获取数据的初始网页链接
current_url = 'https://read.zongheng.com/chapter/1296262/74506344.html'

# 4. 首次请求初始页面
response = requests.get(url=current_url, headers=headers)		# 因为是通过get请求的方式传递数据,此处我们需要用到的就是库中的get方法,而不是post方法
print(response)		# 此处我们查看是否在请求方面完善,打印反馈给我们的response,查看状态码是否为200,如果不是,那就说明不够完善,要么在请求头中缺失必有得参数,或者存在载荷等重用的必要参数

在上述的代码中我们获取了必要的请求参数,并且得到了状态码为正常

我们再次分析,要如何拿到我们需要的东西,也就是小说文字部分
我们可以通过response中的text文本,也就是初始页面的html代码

response.encoding = response.apparent_encoding      # 自动识别编码,避免乱码
soup = BeautifulSoup(response.text, 'html.parser')      # 解析HTML
print(response.text)

当我们得到该网页的html后,再次分析,文字内容具体在哪里

分析后发现,小说的内容在一个id为##的div中

# 定位class为content的div,再获取所有p标签
content_div = soup.find('div', class_='*')  # 找到目标div
if content_div:
    p_tags = content_div.find_all('p')  # 获取div内所有p标签
    # 打印每个p标签的文本内容
    for p in p_tags:
        print(p.get_text(strip=True))  # strip=True去除首尾空白
    print()
else:
    print("未找到class为'content'的div")

那么在这里我们就获取了本页的所有小说内容,但是我们发现我们是来获取小说的而不是获取某一页的,所以要获取所有的小说内容,我们可以通过一个while循环来获取自己所需要的页数,并且还要通过分析来找到下一页的url的链接

在此前我们需要解释一下,我们点击下一页时分析cookie值不一样了,我们可以同过一个创建对话来自动处理cookie值的更新

import requests
from bs4 import BeautifulSoup

count = 0
user_exitinput = int(input('请输入你要结束的章节'))

# 创建会话(自动处理Cookie更新)
session = requests.Session()


# 初始页面url
current_url = 'https://read.zongheng.com/chapter/1296262/74506344.html'

while count < user_exitinput:
    headers = {
    ***
    }

    # 首次请求初始页面
    response = session.get(current_url, headers=headers)
    response.encoding = response.apparent_encoding      # 自动识别编码,避免乱码
    soup = BeautifulSoup(response.text, 'html.parser')      # 解析HTML

    # 定位class为content的div,再获取所有p标签
    content_div = soup.find('div', class_='content')  # 找到目标div
    if content_div:
        p_tags = content_div.find_all('p')  # 获取div内所有p标签
        # 打印每个p标签的文本内容
        for p in p_tags:
            print(p.get_text(strip=True))  # strip=True去除首尾空白
        print()
    else:
        print("未找到class为'content'的div")

    # 提取下一章链接
    reader_bottom = soup.find('div', class_='*')
    if not reader_bottom:
        print("未找到reader-bottomdiv")
        exit()
    next_chapter_a = reader_bottom.find('a', string='下一章')
    if not next_chapter_a:
        print("未找到下一章a标签")
        exit()
    current_url='https://read.zongheng.com' + next_chapter_a.get('href')
    count += 1

4:反思

最后就是对本次训练的反思,我们首先通过获取第一页的小说内容分析,再在此次的基础上获取下一页的内容,以此类推,获取自己想要的页数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值