python怎么爬取墙外数据_6.python爬虫——基于bs4数据解析技术爬取文章

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数据解析技术爬取文章相关教程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值