Python 抓取空标签

标签 python beautifulsoup screen-scraping

我在从页面中抓取某些元素时遇到问题: https://tuning-tec.com/mercedes_w164_ml_mklasa_0507_black_led_seq_lpmed0-5789i

代码:

import requests
from bs4 import BeautifulSoup


URL="https://tuning-tec.com/mercedes_w164_ml_mklasa_0507_black_led_seq_lpmed0-5789i"
page = requests.get(URL)
soup = BeautifulSoup(page.content, 'html.parser')

title=soup.find(class_="product_cart_title").text
price=soup.find(class_="icon_main_block_price_a")
number=soup.find(class_="product_cart_info").findAll('tr')[1].findAll('td')[1]
description=soup.find(id="tab_a")


print(description)

问题是当我想要访问:tab_a

这是内部的问题

<div align="left" class="product_cart_info" id="charlong_id">
</div>

为空。我怎样才能得到它? 我认为它是关于 js 的。也许页面加载时有一些延迟?

最佳答案

正如评论中所述,该信息是通过 JavaScript 加载的,因此 BeautifulSoup 看不到它。但是,如果您查看 Chrome/Firefox 网络选项卡,您可以看到页面在何处发出请求:

import re
import requests
from bs4 import BeautifulSoup

url = 'https://tuning-tec.com/mercedes_w164_ml_mklasa_0507_black_led_seq_lpmed0-5789i'
ajax_url = 'https://tuning-tec.com/_template/_show_normal/_show_charlong.php?itemId={}'

soup = BeautifulSoup(requests.get(url).content, 'html.parser')

print(soup.select_one('.product_cart_title').get_text(strip=True))
print(soup.select_one('.icon_main_block_price_a').get_text(strip=True))
print(soup.select_one('td:contains("Symbol") ~ td').get_text(strip=True))

item_id = re.findall(r"ajax_update_stat\('(\d+)'\)", soup.text)[0]
soup2 = BeautifulSoup(requests.get(ajax_url.format(item_id)).content, 'html.parser')

print()

# just print some info:
for tr in soup2.select('tr'):
    print(re.sub(r' {2,}', ' ', tr.select_one('td').get_text(strip=True, separator=' ')))

打印:

MERCEDES W164 ML M-KLASA 05-07 BLACK LED SEQ
1788.62 PLN
LPMED0

PL
Opis
Lampy 
 soczewkowe ze światłem 
 pozycyjnym LED. Z dynamicznym 
 kierunkowskazem. 100% nowe, w komplecie 
 (lewa i prawa). Homologacja: norma E13 - 
 dopuszczone do ruchu.
Szczegóły
Światła pozycyjne: DIODY Kierunkowskaz: DIODY Światła 
 mijania: H9 w 
 zestawie Światła 
 drogowe: H1 w 
 zestawie Regulacja: elektryczna (silniczek znajduje się w 
 komplecie).
LED TUBE LIGHT Dynamic Turn Signal >>

关于Python 抓取空标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59574852/

相关文章:

python - 无法从 'Process' 导入名称 'multiprocessing'

python - Django 的 STATIC_URL 和 Ajax 请求

python - BeautifulSoup 涉及平面 HTML 层次结构和 next_sibling 循环的故障排除

python - 'unicode' 对象没有属性 'prettify'

python - 网页抓取谷歌财经

python - 我正在尝试使用 Python 3.x 从亚马逊抓取评论,但一无所获

python - django模板系统,在模型中调用函数

python - Python 备份脚本

python - 将 BeautifulSoup 指向某个 <tr> 类

Python 网页抓取 rightmove