当前位置: 首页 > article >正文

BeautifulSoup4通过lxml使用Xpath定位实例

有以下html。<a>中含有图片链接(可能有多个<a>,每一个都含有一张图片链接)。最后一个<div>中含有文字。

上代码:

import requests
from bs4 import BeautifulSoup
from lxml import etree

url='https://www.aaabbbccc.com'
r=requests.get(url)
soup = BeautifulSoup(r.text, 'html.parser')
dom = etree.HTML(str(soup))

my_id='tnews365/31258'

#获取图片链接,放到列表img_url_list中
img_url_list=[]

img_nodes_list=dom.xpath(f"//div[contains(@data-post,'{my_id}')]//a[contains(@class,'tgme_widget_message_photo_wrap')]")

for img_node in img_nodes_list:
    style=img_node.get('style')#图片的链接在style属性中
    #使用正则取出url链接
    img_url_match = r"url\('(.*?)'\)"#注意,匹配(或者)需要使用转义
    slotList = re.findall(img_url_match, style)#此处结果是一个列表
    img_url_list.extend(slotList)

#获取文本内容
text_nodes_list=dom.xpath(f"//div[contains(@data-post,'{my_id}')]//div[contains(@class,'tgme_widget_message_text')]")
try:
    artile_content=text_nodes_list[0].xpath('string(.)')#获取符合条件的div内的文字
except:
    artile_content='本篇无文字内容'

主要知识点:

1、获取指定父节点下的子节点

参考文档:解决xpath定位,获取某个子节点中的某个孩子节点或者文本_xpath当前节点及子节点的文本-CSDN博客

2、获取指定节点下的文本

参考文档:https://www.cnblogs.com/AllenMi/p/14320887.html


http://www.kler.cn/a/281385.html

相关文章:

  • linux文件——文件系统——文件系统深度理解、学习inode
  • fjfjfggjhgjgjjf
  • 集合及数据结构第十节(下)————常用接口介绍、堆的应用和java对象的比较
  • 基于Java的C语言课程教学实践小程序的设计与实现(论文+源码)_kaic
  • UE5如何为《黑神话:悟空》提供逼真的渲染效果?
  • DHU 二维数组 暗恋
  • Spring Cloud(面试篇)
  • Agent实际落地的应用 未来生活的无形助手
  • 2022SHBW(服务器部分)
  • 深度学习-OpenCV运用(2)
  • 记一次SQL注入漏洞获取管理员账号密码
  • Python算法工程师面试整理-线性代数
  • 合宙LuatOS产品规格书——Air700EAQ
  • error:0308010C:digital envelope routines::unsupported【超详细图解】
  • 【C++】—— 模版初阶
  • 如何使用ssm实现校园二手交易市场+vue
  • 决策树和随机森林介绍
  • 无人机侦测:光电识别追踪设备(双光)技术详解
  • Redis increment 函数处理并发序列号
  • 变电站智能巡检机器人:构建智能化电力运维新模式