6.python爬虫——基于bs4数据解析技术爬取文章
6.python爬虫——基于bs4数据解析技术爬取文章
python爬虫——基于bs4数据解析技术爬取文章1.需求
2.分析
3.代码
4.实现效果
1.需求
爬取https://www.shicimingju.com/book/sanguoyanyi.html上三国演义的所有内容
2.分析
进入网站后,发现为单页,内容在跳转链接里
使用抓包工具进行查看,发现跳转到详情内容的章节,均存在于< div calss=“book-mulu”>下的a标签中,< a >具有属性href具有对应的详情内容URL和每一章的章节名字。
因为需要获取所有章节的URL和文本内容这两个数据,因此使用bs4中的select()要比find()更为方便,通过select层级选择器’div > ul > li > a’来获取a标签中的属性及内容。
获取到属性后,便可通过URL跳转到详情页中,打开详情页
发现文章中的内容均在< div class=“chapter_content”>下的< p>标签中,此时需用find(‘div’,class_=‘chater_content’)便可以实现文本内容的获取。
3.代码
import requests
from bs4 import BeautifulSoup
if __name__ == "__main__":
# 对首页的页面数据进行爬取
url = 'https://www.shicimingju.com/book/sanguoyanyi.html'
headers = {
'User-Agent':'Mozilla/....'
}
page_text = requests.get(url=url,headers=headers).text
# 在首页中解析出章节的标题和详情页的url
# 1.实例化BeautifulSoup对象,需要将页面源码数据加载到该对象中
soup = BeautifulSoup(page_text,'lxml')
# 解析章节标题和详情页的url
a_list = soup.select('.book-mulu > ul > li > a')
with open('./sanguo.txt','w',encoding='utf-8') as fp:
for a in range(len(a_list)-1):
title = a_list[a].string
detail_url = 'http://www.shicimingju.com'+a_list[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(title+':'+content+'\n')
print(title,'success!')
4.实现效果
6.python爬虫——基于bs4数据解析技术爬取文章相关教程