如何用BeautifulSoup4爬取小说资源
admin
2023-07-15 19:22:27
0
随便找了一个小说网站,没有爬取文章内容,主要是理解一下BeautifulSoup4的使用方法,如果搞懂本文了,爬取文章都不是问题.
代码最后生成一个字典如下:
{'玄幻':[['书名1','作者1','书链接1'],
         ['书名2','作者2','书链接2']
       ],
 '恐怖':[['书名1','作者1','书链接1'],
         ['书名2','作者2','书链接2']
       ]
}
代码正文:

请安装requests和bs4(BeautifulSoup)

from bs4 import BeautifulSoup
import requests,sys
sys.setrecursionlimit(10000)  # 防止超出递归深度报错

Url_Index = 'http://m.pfwx.com'

r = requests.get(Url_Index)
r.encoding = 'utf-8'
content = r.text
soup = BeautifulSoup(content,features='html.parser')

target = soup.find('div',class_='nav') # 只获取第一个包含class='nav'属性的div标签
tar = target.find_all('a')  # 过滤出a标签

# 获取index的栏目
Index_Menu = {}
for so in tar:
    TEXT = so.get_text()
    HREF = Url_Index + so['href']       # 获取href属性的值
    Index_Menu[TEXT] = HREF

# 获取分类
Class_Page = Index_Menu['分类']
r = requests.get(url=Class_Page)
r.encoding = 'utf-8'
content = r.text
soup = BeautifulSoup(content,features='html.parser')
tag = soup.body.find_all('li',class_='prev')
Menu = {}
for so in tag:
    TEXT = so.get_text() # 获取文本
    HREF = so.a.attrs['href'] # 获取a标签中的href属性
    # 生成各个分类的Url
    Category_Url = Url_Index + HREF
    Menu[TEXT] = Category_Url

# 获取每种分类的书信息
for ClassName in Menu:
    Book_List = []
    def make(url):
        '''获取所有的书信息,并且交给函数IF判断是否还有下一页,如果有则继续获取书的信息'''
        r = requests.get(url=url)
        content = r.text
        soup = BeautifulSoup(content, features='html.parser')
        target = soup.find_all('a', class_='blue')
        for so in target:
            BookName = so.get_text()                        # 书名
            IMHOW_NAME = so.next_sibling.split('/')[1]  # 作者名
            HREF = Url_Index + so['href']               # 书的链接
            Book_List.append([BookName,IMHOW_NAME,HREF])

        Next_Page = soup.find('div', class_='page')
        IF(NextPage=Next_Page)

    def IF(NextPage):
        '''判断是否还有下一页,如果有则继续循环'''
        for Page in NextPage.find_all('a'):
            if Page.get_text() == '下页':
                '''判断如果还有下页,则继续获取书的信息'''
                Url = Url_Index + Page['href']
                make(url=Url)

    url=Menu[ClassName] # 获取当前分类的URL
    make(url) # 获取当前分类的所有书信息
    Menu[ClassName] = Book_List # 最后生成的信息都在这个字典里面;格式{'玄幻':[['书名1','作者1','书链接1'],['书名2','作者2','书链接2']]}

相关内容

热门资讯

特朗普:正致力于与伊朗达成协议... 特朗普在《纽约邮报》一档播客访谈节目中称,他正与伊朗磋商一项协议,伊朗已同意不再谋求拥有核武器。他表...
不接壤的日菲为何偷划海界? 日菲近日发表联合声明,宣称就“划定两国专属经济区和大陆架的海洋边界”启动正式谈判。两个隔海相望的国家...
凤凰晚报丨从钳工到老戏骨,魏宗... 今日人物【从钳工到老戏骨,魏宗万用一生诠释“戏比天大”】6月1日,表演艺术家魏宗万在上海逝世,享年8...
科威特称伊朗袭击致63人受伤 科威特卫生部门3日称,伊朗当天对科威特的袭击已造成63人受伤,相关部门已启动紧急应对预案,并在全国范...
日本标榜“和平国家”却行扩军备... 今年是东京审判开庭80周年,世界正回望历史、反思战争罪责、捍卫二战后来之不易的国际秩序之际,日本却迈...
浙江杨梅即将大规模上市,如何破... “我们现在的压力很大。”5月底,浙江余姚杨梅产区丈亭镇副镇长林宇站在一片杨梅林前对第一财经表示,当地...
致5死2伤!韩国就韩华航空航天... 【环球网报道 记者 姜蔼玲】据韩联社6月1日报道,针对位于韩国大田的韩华航空航天公司发生爆炸致7人伤...
黄河科技学院2026年招生简章 长按图片识别二维码或点击 “阅读原文” 查看电子招生简章。
医路起航,从“心” 开始!黄河... 6月1日上午,黄河科技学院附属医院2022级临床医学本科实习生入院岗前培训在大医讲堂顺利举办。院领导...
问题居然在实体卡槽上!美版iP... 6月2日消息,日前,又有博主提前把还没发布的iPhone 18 Pro电池参数给曝光了出来,根据爆料...