Python爬虫——bs4数据解析

爬取文章内容 bs4数据解析

数据解析的原理

  • 解析的局部文本内容会在标签之间或者标签对应的属性中进行存储
  1. 进行指定标签的定位
  2. 标签或者标签对应的属性中存储的数值进行提取

爬取页面中指定的内容

  1. 指定url
  2. 发起请求
  3. 获取相应数据
  4. 数据解析(使用bs4)
  5. 持久化存储

bs4解析 基础语法

from bs4 import BeautifulSoup
import requests

if __name__ == '__main__':
    # 将本地的html文档中的数据加载到该对象中
    fp = open('./index.html' , 'r' , encoding='utf-8')
    soup = BeautifulSoup(fp ,'lxml')

    # 互联网上获取的页面源码加载到该对象中
    # page_text = response.text
    # soup = BeautifulSoup(page_text , 'lxml')


    # print(soup)
    # print(soup.a)  # 返回html中第一次出现的a对应的标签
    # print(soup.find('div'))  #等同于 soup.div
    # print(soup.find('div' , class_ = 'search-con fl-r'))  # 属性定位class_
    # print(soup.find_all('a')) # 返回符合要求的所有标签(返回列表)

    # print(soup.select('.top'))
    # print(soup.select('.top > a')[0])  # 空格表示多个层级,>表示一个层级

    # 获取标签之间的文本数据:  .text/.get_text  可以获取某个标签中所有的文本内容
    #                       .string 只可以获取该标签下直系的文本内容
    print(soup.select('.top')[0])
    print(soup.select('.top ')[0].text)
    print(soup.select('.top ')[0].string)
    # 获取标签中的属性值
    print(soup.select('.top>a'))
    print(soup.select('.top > a')[0]['href'])

三国演义爬取实战

网页分析
在这里插入图片描述

文章详细内容获取

from bs4 import BeautifulSoup
import requests

if __name__ == '__main__':
    url = 'https://www.gushicimingju.com/novel/sanguoyanyi/'   # url可能会发生变化,自己更改
    headers={
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0'
    }
    page_text = requests.get(url=url , headers = headers).text
    soup = BeautifulSoup(page_text , 'lxml')
    # 持久化存储,打开文件
    fp = open('./三国演义.txt' , 'w' , encoding='utf-8')

    content = soup.select('.main-content > ul > li >a')  # 定位到页面中,标题对应的部分
    for index in range(len(content)):
        # 标题页获取的url(不完整的url)
        detail_url = content[index]['href']
        # 获取章节标题
        title = content[index].string
        # 拼接成完整的url
        url = 'https://www.gushicimingju.com/' + detail_url
        page_text = requests.get(url=url, headers=headers).text
        xiangxi_soup = BeautifulSoup(page_text,'lxml')
        xiangxi_content = xiangxi_soup.find('div' , class_='shici-content check-more').text
        # print(xiangxi_content)
        fp.write(title + ':' +xiangxi_content + '\n')

        print(title , 'success!!!')
        # break   #先循环一次看对不对

看了b站视频,总结的一篇文章,原视频如下
https://www.bilibili.com/video/BV1ha4y1H7sx?p=22&spm_id_from=pageDriver&vd_source=a087002bb5c8adf082a5e20b929d94d4

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值