python爬虫,beatifulsop获取标签属性值(取值)案例
前面的案例里,均采用正则匹配的方式取值
title = re.findall('">(.*?)</a>', i, re.S)[0]#标题
url = re.findall('="(.*?)" target', i, re.S)[0]#地址
这么写的容错能力有限,爬取的数据越多,越容易出现匹配不到内容的情况
这次采用获取属性值的方式取值,除非属性变化,否则基本不会出现错误
爬取下图内链接红色框内文章标题和链接

目标内容html结构如下图

可见,href的值是链接,title的值是标题,所以,获取对应内容的写法如下
title = i.get("title")#地址
url = i.get("href")#地址
因为目标数据是通过匹配所有“a”标签来获取的,所有有一部分数据并不是本次案例需要的,为了使爬取的内容更加精简,所以对soup.find_all的匹配规则进行的补充
以前是直接写成“results = soup.find_all('a')”,后发现目标数列里有共同的“target='_blank'”内容,其他“a”内没有,所可以写成“results = soup.find_all('a', target='_blank')”

上面两处修改,使脚本爬取更加精准有效,容错能力得到提升
附全部代码
from bs4 import BeautifulSoup
import requests
import time fgwurl = 'http://fgw.hunan.gov.cn/fgw/tslm_77952/hgzh/index.html' def fgw(fgwurl):
response = requests.get(fgwurl)
response.encoding='utf-8'
soup = BeautifulSoup(response.text,'lxml')
results = soup.find_all('a', target='_blank')for i in results:
h=str(i)
if "title" in h:
#title = i.get_text()#标题
title = i.get("title")#地址
url = i.get("href")#地址
print(title +" "+ "详情请点击" + " " + url)
else:
None fgw(fgwurl)
参考链接:
https://blog.csdn.net/jaray/article/details/106604362
https://www.cnblogs.com/kaibindirver/p/9927297.html
http://blog.sina.com.cn/s/blog_166ae58120102xomk.html
python爬虫,beatifulsop获取标签属性值(取值)案例的更多相关文章
- python学习之----获取标签属性
到目前为止,我们已经介绍过如何获取和过滤标签,以及获取标签里的内容.但是,在网 络数据采集时你经常不需要查找标签的内容,而是需要查找标签属性.比如标签<a> 指向 的URL 链接包含在hr ...
- Python爬虫学习三------requests+BeautifulSoup爬取简单网页
第一次第一次用MarkDown来写博客,先试试效果吧! 昨天2018俄罗斯世界杯拉开了大幕,作为一个伪球迷,当然也得为世界杯做出一点贡献啦. 于是今天就编写了一个爬虫程序将腾讯新闻下世界杯专题的相关新 ...
- python爬虫之分析Ajax请求抓取抓取今日头条街拍美图(七)
python爬虫之分析Ajax请求抓取抓取今日头条街拍美图 一.分析网站 1.进入浏览器,搜索今日头条,在搜索栏搜索街拍,然后选择图集这一栏. 2.按F12打开开发者工具,刷新网页,这时网页回弹到综合 ...
- Python中如何获取类属性的列表
这篇文章主要给大家介绍了在Python中如何获取类属性的列表,文中通过示例代码介绍的很详细,相信对大家的学习或者工作具有一定的参考借鉴价值,有需要的朋友可以参考借鉴,下面来一起看看吧. 前言 最近工作 ...
- UI自动化之特殊处理四(获取元素属性\爬取页面源码\常用断言)
获取元素属性\爬取页面源码\常用断言,最终目的都是为了验证我们实际结果是否等于预期结果 目录 1.获取元素属性 2.爬取页面源码 3.常用断言 1.获取元素属性 获取title:driver.titl ...
- Java循环一个对象的所有属性,并通过反射给这些属性赋值/取值
Java循环一个对象的所有属性,并通过反射给这些属性赋值/取值 说到循环遍历,最常见的遍历数组/列表.Map等.但是,在开发过程中,有时需要循环遍历一个对象的所有属性.遍历对象的属性该如何遍历呢?查了 ...
- Entity Framework 6 Recipes 2nd Edition(12-8)译 -> 重新获取一个属性的原始值
12-8. 重新获取一个属性的原始值 问题 在实体保存到数据库之前,你想重新获取属性的原始值 解决方案 假设你有一个模型 (见 Figure 12-11) 表示一个员工( Employee),包含工资 ...
- Cascade属性的取值
Cascade属性的取值有:1.none:忽略其他关联的对象,默认值.2.save-update:当session通过save(),update(),saveOrUpdate()方法来保存或更新对象时 ...
- Python爬虫教程-10-UserAgent和常见浏览器UA值
Python爬虫教程-10-UserAgent和常见浏览器UA值 有时候使用爬虫会被网站封了IP,所以需要去模拟浏览器,隐藏用户身份, UserAgent 包含浏览器信息,用户身份,设备系统信息 Us ...
- spring scope 属性的取值
Spring 容器是通过单例模式创建 Bean 对象的,也就是说,默认情况下,通过调用 ac.getBean("mybean")方法获得的对象都是同一个 mybean 对象 使用单 ...
随机推荐
- 在日常工作和生活中使用Linux-开篇
前言 欢迎来到<在日常工作和生活中使用Linux>的系列分享.在这个系列中,我们将探讨为什么选择Linux,以及如何在日常工作和生活中高效地使用它.无论你是刚刚接触Linux的新手,还是希 ...
- rbd常用的配置参数
本文分享自天翼云开发者社区<rbd常用的配置参数>,作者:l****n rbd的基本介绍 rbd的架构如下图所示: rbd采用CRUSH算法实现数据的随机分布.CRUSH算法,即Contr ...
- NSSM使用说明
1.说明 NSSM是一个服务封装程序,它可以将普通exe程序封装成服务,使之像windows服务一样运行.同类型的工具还有微软自己的srvany,不过nssm更加简单易用,并且功能强大.它的特点如下: ...
- 使用必读-使用Iceberg数据湖需要注意的点
一.开发注意事项 1.Iceberg选择合适的表版本 简述:Iceberg目前有两个表版本(V1和V2),根据数据选择合适的表版本. V1表只支持增量数据插入,适合做纯增量写入场景,如埋点数据. V2 ...
- FLink自定义Sink,生产的数据导出到Redis
一.pom文件 https://www.cnblogs.com/robots2/p/16048648.html 二.自定义sink 2.1 自定义sink package net.xdclass.cl ...
- P5384 [Cnoi2019] 雪松果树 题解
传送门 前言 一年一度,生长在高山上的雪松果树又结果了. 第二天,雪松果树长成了一颗参天大树, 上面长满了雪松果. 求雪松果树生长周期 整活向题解. 奋力卡常 3h,纪念一下. 是的,我一个人的提交占 ...
- .NET 使用 DeepSeek R1 开发智能 AI 客户端
前言 最近 DeepSeek 可太火了,在人工智能领域引起了广泛的关注,其强大的自然语言处理能力和智能搜索功能让大家跃跃欲试. 对于 .NET 技术栈的开发来说,一个常见的问题是:能否在 .NET 程 ...
- 【软件开发】CMake学习笔记
[软件开发]CMake 学习笔记 CMake 是什么? 是构建系统(如 Visual Studio)的文件(如 .vcxproj .sln)的创建器,具体要生成的构建系统可以通过 CMakePrese ...
- autMan奥特曼机器人-代理池配置教程
一.优势: 全可视化 稳如老牛(从2.8.6开始) 隧道代理和接口获取,使用灵活 代理池运行状态指令可查:代理池 二.启用代理池并设置服务端口 代理池的启用与关闭,均为重启autMan生效 设置隧道代 ...
- 为 Typecho 添加 B 站蛆音娘表情
首先为什么帮助文档写的很清楚了我还要发,我只是让你们少走弯路一次弄好,后面我会说到 #1. 准备并上传表情文件 首先,你需要在文章底部下载表情文件,对于表情文件,有如下要求和建议: 所有后缀名必须相同 ...