我正在使用 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"> </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/