javascript - BeautifulSoup:解析 JavaScript 动态内容

标签 javascript python beautifulsoup

我正在使用 BeautifulSoup 开发一个 python 网络 scraper 来解析来自 this 的“产品列表”网站并为每个产品列表提取一些信息(即价格、 vendor 等)。 我能够提取其中的许多信息,但只有一个(即产品数量)似乎是 隐藏 原始 html。通过我的浏览器查看网页,我看到的是 (unid = units):

product_name       1 unid      $10.00 

但是它的 html 没有显示我可以提取的任何整数值。它显示了这个 html 文本:

<div class="e-col5 e-col5-offmktplace ">
  <div class="kWlJn zYaQqZ gQvJw">&nbsp;</div> 
  <div class="imgnum-unid"> unid</div>
</div>

我的问题是如何获取存储产品数量的 e-col5隐藏内容?

import re
import requests
from bs4 import BeautifulSoup

page = requests.get("https://ligamagic.com.br/?view=cards%2Fsearch&card=Hapatra%2C+Vizier+of+Poisons")
soup = BeautifulSoup(page.content, 'html.parser')
vendor = soup.find_all('div', class_="estoque-linha", mp="2")
print(vendor[1].find(class_='e-col1').find('img')['title'])
print(vendor[1].find(class_='e-col2').find_all(class_='ed-simb')[1].string)
print(vendor[1].find(class_='e-col5'))

编辑: 隐藏内容 在这种情况下代表 JavasSript 动态更新的内容。

最佳答案

unid保存在JS数组中

vetFiltro[0]=["e3724364",0,1,....];

1是unid,你可以用正则表达式得到它

# e-col5
unitID = vendor[1].get('id').replace('line_', '') # line_e3724364 => e3724364
regEx = r'"%s",\d,(\d+)' % unitID
unit = re.search(regEx, page.text).group(1)
print(unit + ' unids')

关于javascript - BeautifulSoup:解析 JavaScript 动态内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53924741/

相关文章:

javascript - Chrome 调试协议(protocol) : Create local storage value

使用 Javascript 而不是 jquery 从 json 创建 dom 元素

python - Beautiful Soup - 抓取表格特定元素的更好方法

python - 无法在 BeautifulSoup 中美化抓取的 html

python - 使用 BeautifulSoup 查找所选选项

javascript - 在聊天容器上 react 自动滚动到底部

javascript - 在 "devDependencies"和 "peerDependencies"中指定 node.js 依赖

python - 在 groupby pandas 内有条件地设置值

python - 使用字典作为引用从不同的数据帧计算 pandas 数据帧中新列的编号

python - 仅接受单行的 PyGTK TextView