万普插件库

jQuery插件大全与特效教程

笔趣阁小说Python3爬虫抓取(笔趣阁小说搜索)

第一个Python3爬虫实战程序,我们试着将笔趣阁上的小说抓取一下。

(1) 实战背景

小说网站-笔趣阁:https://www.bqgge.com/

笔趣阁是一个小说网站,里面有很多的小说,为了看小说方便,特地将小说抓取生产TXT文档。

PS:本实例仅为交流学习。

(2) 小试牛刀

我们先试着抓取《重生都市仙帝》的第一张试一下,网址是:
https://www.bqgge.com/biquge_2858/3638329.html

import requests

from bs4 import BeautifulSoup

url = 'https://www.bqgge.com/biquge_2858/3638329.html'

response = requests.get(url)

bs = BeautifulSoup(response.text,'html.parser')

print(bs)

抓取的内容结果:

 




第1章 重生_重生都市仙帝_武侠小说_笔趣阁



















    首页 > 武侠小说 > 重生都市仙帝 > 第1章 重生

    第1章 重生(1/2)

    果可想而知。边无人的打击,张逸风居然主动去找姜凤,说答应让她当自己的女朋友。他被一个女人狠狠伤了自尊心!最终被人打成了重伤,男人最宝贵的地方也从此失去了作用。业蒸蒸日上。

    本章未完,点击下一页继续阅读。

    返回顶部

    可以看到,我们很轻松地获取了 HTML 信息。但是,很显然,很多信息是我们不想看到的,我们只想获得如右侧所示的正文内容,我们不关心 div、br 这些 html 标签。如何把正文内容从这些众多的 html 标签中提取出来呢?这就是本次实战的主要内容。


    (3) 整合代码

    import requests
    from bs4 import BeautifulSoup
    import os
    
    # 抓取网站的url
    root_url = 'https://www.bqgge.com'
    
    # 小说目录页面
    xiaoshuo_url = 'https://www.bqgge.com/index/2858/'
    
    # 保存文件的路径
    local_path = 'D:/python/重生都市仙帝.txt'
    # 总页数
    total_page = 109
    
    # 获取每篇文章内容
    def getArticleContent(url):
        response = requests.get(url)
        bs = BeautifulSoup(response.text,'html.parser')
        div_tag = bs.find('div',id='booktxt')
        p_tag = div_tag.find_all('p')
        for i in p_tag:
            f = open(local_path,'a') # 打开文件
            f.write(i.get_text()) #写入内容
            f.write('\n') #换行
            f.close()
        #分页
        page_tag = bs.find('a',id='next_url')
        text = page_tag.get_text()
        if text == '下一页':
            getArticleContent(root_url + page_tag.get('href'))
        return
    
    #获取每篇文章的链接
    def getArticleUrl(url):
        response = requests.get(url)
    
        bs = BeautifulSoup(response.text,'html.parser')
    
        div_tag = bs.find('div',id='content_1')
    
        a_tag = div_tag.find_all('a')
    
        # 便利列表
        for i in a_tag:
            # 获取a标签的href属性
            href = i.get('href')
            # 获取a标签的文本内容
            text = i.get_text()
            # 拼接url
            url = root_url + href
    
            # 判断文件是否存在
            if not os.path.exists(local_path):
                f = open(local_path,'w')
                f.close()
            f = open(local_path,'a') # 打开文件
            f.write(text) #写入标题
            f.write('\n') #换行
            f.close()
            getArticleContent(url)
        return
    
    
    # 循环增加改变页码
    for i in range(1,total_page):
        # 拼接url
        url = xiaoshuo_url + str(i)
        # 调用函数
        getArticleUrl(url)

    很简单的程序,单进程跑,没有开进程池。下载速度略慢,喝杯茶休息休息吧。

    控制面板
    您好,欢迎到访网站!
      查看权限
    网站分类
    最新留言