文章 > 爬虫实战 > 利用BeautifulSoup4数据解析实例

利用BeautifulSoup4数据解析实例

头像

2021-03-29 20:00:40773浏览 · 0收藏 · 0评论

banner37.png

上一篇文章我们对bs4数据解析有了大概的了解,详细的讲解了数据解析以及利用bs4数据解析的原理,本篇文章通过一个案例具体说明。

这里以爬取三国演义所有章节为例。

1.爬取要求是爬取三国演义的所有章节

2.目标地址:https://www.shicimingju.com/book/sanguoyanyi.html

3.代码

from bs4 import BeautifulSoupimport requestsif __name__ == '__main__':headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'}url = 'https://www.shicimingju.com/book/sanguoyanyi.html'page_text = requests.get(url=url,headers=headers).text
    soup = BeautifulSoup(page_text,'lxml')li_list = soup.select('.book-mulu > ul > li')fp = open('./三国演义小说.txt','w',encoding='utf-8')for li in li_list:title = li.a.string
        detail_url = 'https://www.shicimingju.com'+li.a['href']detail_page_text = requests.get(url=detail_url,headers=headers).text
        detail_soup = BeautifulSoup(detail_page_text, 'lxml')div_tag = detail_soup.find('div',class_='chapter_content')content = div_tag.text
        fp.write('\n' + title + ':' + content +'\n')print(title,'爬取成功')

4.出现乱码以及处理

image.png

response.text在用文本格式看的时候有乱码,回来的内容可能被压缩了。在此修改response.content.decode(utf-8)以utf-8格式输出。

from bs4 import BeautifulSoupimport requestsif __name__ == '__main__':headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'}url = 'https://www.shicimingju.com/book/sanguoyanyi.html'page_text = requests.get(url=url,headers=headers).content.decode("utf-8")soup = BeautifulSoup(page_text,'lxml')li_list = soup.select('.book-mulu > ul > li')fp = open('./三国演义小说.txt','w',encoding='utf-8')for li in li_list:title = li.a.string
        detail_url = 'https://www.shicimingju.com'+li.a['href']detail_page_text = requests.get(url=detail_url,headers=headers).content.decode("utf-8")detail_soup = BeautifulSoup(detail_page_text, 'lxml')div_tag = detail_soup.find('div',class_='chapter_content')content = div_tag.text
        fp.write('\n' + title + ':' + content +'\n')print(title,'爬取成功')

5.最终效果展现

image.png

python爬虫相关知识点推荐学习:python爬虫

更多python学习可以访问python学习网进行学习。

关注公众号

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

底部广告图 底部广告图按钮