美文网首页
Python获取幽默笑话大全

Python获取幽默笑话大全

作者: 爱写代码的小王子 | 来源:发表于2021-07-09 16:51 被阅读0次

    前言:
    本次我们需要爬取幽默笑话大全里的各种搞笑内容,当然还是使用上次我们提到的BeautifulSoup这个库,它的功能很强大,是本次爬取搞笑内容必不可少的工具。

    接下来我们就爬取我们想要的内容吧,首先我们导入需要的库

    import requests
    from bs4 import BeautifulSoup
    

    然后获取url地址页面内容,这里的headers是模拟浏览器来访问服务器,这里可以避免网页反爬取时报错

    def download_page(url):
        headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0"}
        r = requests.get(url,headers=headers)
        return r.text
    

    然后将获取的url地址页面内容传入BeautifulSoup,生成soup对象

     output = """第{}页 作者:{} 性别:{} 年龄:{} 点赞:{} 评论:{}\n{}\n------------\n"""
        soup = BeautifulSoup(html,'html.parser')
    

    找到对应的标签获取作者姓名

    con = soup.find(id='content-left')
        con_list = con.find_all('div',class_="article")
        for i in con_list:
            author = i.find('h2').string #获取作者名字
    

    获取笑话的内容

     content = i.find('div',class_'content').find('span').get_text() #获取内容
    

    然后获取评论和好笑数量

     stats = i.find('div',class_='stats')
            vote = stats.find('span',class_='stats-vote').find('i',class_='number').string
            comment = stats.find('span',class_='stats-comments').find('i',class_='number').string
    

    最后获取作者年龄,性别

     author_info = i.find('div',class_='articleGender') #获取作者 年龄,性别
            if author_info is not None: #非匿名用户
                class_list = author_info['class']
                if "womenIcon" in class_list:
                    gender = '女'
                elif "manIcon" in class_list:
                    gender = '男'
                else:
                    gender = ''
                age = author_info.string # 获取年龄
            else: # 匿名用户
                gender = ''
                age = ''
                
            save_text(output.format(page,author,gender,age,vote,commentent,contentent))
    

    然后将我们爬取的内容保存到记事本

    def save_text(*args):
        for i in args:
            with open('qiubai.txt','a',encoding='utf-8') as f:
                f.write(i)
    

    最后在程序的入口调用我们对应的方法

    def main():
        #我们点击下面链接,在页面下方可以看到共有13页,可以构造如下 url
        for i in range(1,14):
            url = 'https://qiushibaike.com/text/page/{}'.format(i)
            html = download_page(url)
            get_content(html,i)
            
    if __name__ == '__main__':
        main()
    

    总结:在本次学习中,同样遇到了一些问题,比如获取的内容为空报错,后来仔细检查才发现是代码写错了,以后需要更加细心,更加深入的学习。

    相关文章

      网友评论

          本文标题:Python获取幽默笑话大全

          本文链接:https://www.haomeiwen.com/subject/wgvfpltx.html