Python Beautiful Soup 实现跨页面的数据抓取(以新闻列表页为例)

前言

近期业务需求,需对某网站的新闻列表页的标题、链接以及跳转子链对新闻内容进行提取与下载。因此,采用Python 的Beautiful Soup完成业务需求,本文为学习beautifulsoup包的学习笔记。

在此之前声明本文以下用词的定义:

  • 主链:新闻列表页的链接
  • 子链:新闻列表页中每条新闻的链接,即新闻详情页的链接
  • requests模块:一个支持HTTP服务的模块,主要用于HTTP请求
  • re模块:正则表达式,不过多解释,等过两天单独整理一版python正则表达式的博文

BeautifulSoup安装

当前最新版本为Beautiful Soup 4.4.0(中文官网链接),首先进行beautiful soup的安装,最新的包是兼容python2和python3的,安装方法:

$ pip install beautifulsoup4

在第一次安装失败,提示我pip版本低,需要更新版本:
pip版本过低
输入更新指令,完成pip更新(注:需先cd进对应python根目录):

$ python.exe -m pip install --upgrade pip

pip版本更新
第二次beautifulsoup安装成功:
安装成功

这里出现的报错(WARNING)是连接超时的原因,不过最后还是成功的安装下来,此条报错先忽略。

然后是安装解析器
Beautiful Soup支持Python标准库中的HTML解析器,还支持一些第三方的解析器,其中一个是 lxml,官方文档推荐使用lxml。所以我们先来安装lxml解析器:

$ pip install lxml

此外,因为涉及跨页面提前新闻内容,所以也需要安装requests包:

$ pip install requests

此外,页面链接的参数部分若有固定位置变量规律,可补充安装正则包:

$ pip install re

代码实现

获取目标html

这里有两个不同的方法实现,分为本地html读取request直接请求url

本地html读取(更稳定)

首先将网页保存在本地指定文件夹中
本地html路径
代码:
html读取代码
print出数据,调试器显示运行成功:
运行成功

request直接请求url(更方便)

requests读取

将标题、日期、子链提取出来

代码:
在这里插入图片描述

这里拓展一下,关于soup.find_all()方法:

<
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值