鱼C论坛

 找回密码
 立即注册
查看: 3461|回复: 6

BeautifulSoup如何提取<td>下的span

[复制链接]
发表于 2020-8-16 00:31:43 | 显示全部楼层 |阅读模式
50鱼币
本帖最后由 shenshuai 于 2020-8-16 00:32 编辑

大佬们,我现在想提取一段字符串(629,088 in Automotive),如图所示。但是这里貌似什么有用的标签都没有。请问应该怎么用beautifulSoup提取他呢?
Screen Shot 2020-08-15 at 9.24.38 AM.png
这是网页地址:https://www.amazon.com/dp/B071HVG69S

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-16 10:08:53 | 显示全部楼层
body绑定了js事件,直接拿不到你的html元素,估计得用selenium。
1.png

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-17 14:07:59 | 显示全部楼层
  1. soup.find("td").span
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-17 20:58:07 | 显示全部楼层
我没搜到你说的这个字符串,,如果资料在js里面的话就需要用json模块..分析字典类型的数据.用BeautifulSoup是分析xml格式的,并不能分析json  如果要分析json先把接口找到来,然后发论坛,我再给你写段代码,你看我帖子,我最近有发例子
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-20 10:04:27 | 显示全部楼层
手写的,没经过调试,不知道行不行
  1. #soup是BeautifulSoup对象
  2. table = soup.find("div", id="productDetails_db_sections").find("div", class_="a-section table-padding").find("table")
  3. trs = table.find_all("tr")
  4. st = "" # 要提取的字符串
  5. for tr in trs:
  6.     td = tr.find("td")
  7.     if td.text().find("Automotive") > 0:
  8.         st = td.text()
  9.         break
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-8-31 01:59:21 | 显示全部楼层
感谢各位大佬的回答,我用了笨办法做出来了,我用re模块,给大家借鉴一下
  1. level_category = soup.find(id='productDetails_detailBullets_sections1')  # 获取一级和二级排名
  2. content = str(level_category)
  3. reg = '<span>#(.*?) in'
  4. result = re.findall(reg, content)
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-1 20:54:33 | 显示全部楼层
我觉得parsel模块也不错,用css选择器
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-25 21:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表