这是我的密码
from bs4 import BeautifulSoup
import requests
import time
import mysql.connector
header = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36" ,
'referer':'https://www.google.com/'
}
htmlRequest = requests.get("https://www.promodescuentos.com/",headers=header).text
soup = BeautifulSoup(htmlRequest, 'lxml')
promos = soup.find_all('article', class_ = 'thread cept-thread-item thread--type-list imgFrame-container--scale thread--deal')
for index, promo in enumerate(promos):
promo_id = str.lstrip(promo['id'], 'thread_')
promo_name = promo.find('a', class_ = 'cept-tt thread-link linkPlain thread-title--list js-thread-title')['title']
promo_prize = promo.find('span', class_ = 'thread-price text--b cept-tp size--all-l size--fromW3-xl')
original_prize = promo.find('span', class_ = 'mute--text text--lineThrough size--all-l size--fromW3-xl')
promo_points = promo.find("span", {"class": "cept-vote-temp vote-temp vote-temp--burn"})
if promo_prize is not None:
text_prize = str.lstrip(promo_prize.text, '$')
else:
text_prize = 'Not available'
if original_prize is not None:
text_discount = str.lstrip(original_prize.text, '$')
else:
text_discount = 'Not available'
if promo_points is not None:
text_points = promo_points.text.strip()[:-1]
else:
text_points = 'Not available'
print(f"Index: {index}")
print(f"Promo Id: {promo_id}")
print(f"Titulo Promo: {promo_name}")
print(f"Precio Promo: {text_prize}")
print(f"Descuento Promo: {text_discount}")
print(f"Puntos: {text_points}")
print('')
输出如下
Index: 0
Promo Id: 797731
Titulo Promo: Santa clara: 2x1 en Helados de 1L del 5 al 31 de Diciembre
Precio Promo: 1
Descuento Promo: Not available
Puntos: Not available
Index: 1
Promo Id: 797661
Titulo Promo: Amazon: Apple iPhone 11 Pro 256 GB Color Verde(Midnight Green)(Reacondicionado)
Precio Promo: 9,641
Descuento Promo: Not available
Puntos: 1209
Index: 2
Promo Id: 797725
Titulo Promo: Sonics VPN: 1 Año de Cuenta Premium (Windows, Android e iOS)
Precio Promo: GRATIS
Descuento Promo: 966
Puntos: 967
Index: 3
Promo Id: 797693
Titulo Promo: Costco: Apple iPad Mini 8.3" Wi-Fi 64GB Rosa, precio aplicando el cupon y pagando con Paypal (12 MSI)
Precio Promo: 8,999
Descuento Promo: Not available
Puntos: 1043
Index: 4
Promo Id: 797702
Titulo Promo: Tarjeta de Crédito sin Anualidad de por Vida + 2 meses de Amazon Prime Gratis (Solo trae tu Nómina a Banorte)
Precio Promo: Not available
Descuento Promo: Not available
Puntos: 1760
Index: 5
Promo Id: 797750
Titulo Promo: Amazon: Apple Watch Series 7 (GPS, 41 mm) caja de aluminio verde, con correa deportiva Clover, regular (renovado)
Precio Promo: 5,842
Descuento Promo: Not available
Puntos: 1049
Index: 6
Promo Id: 797716
Titulo Promo: Elektra: Batería Xiaomi (REDMI) Mi Power Bank 3 Pro 20000MAh Negra
Precio Promo:
Descuento Promo: Not available
Puntos:
Index: 7
Promo Id: 795242
Titulo Promo: Renos de Fuego 2022
Precio Promo: Not available
Descuento Promo: Not available
Puntos:
Index: 8
Promo Id: 797526
Titulo Promo: Beerhouse 24 Pack Modelo Premium ¡Envío Gratis!
Precio Promo:
Descuento Promo:
Puntos:
所以在索引5之后,我的promo_prize,original_prize,promo_points的数据没有显示出来。我做了一个测试,得到了所有的html文本,并把它放在一个文件中。html工作正常,但当使用html请求到网站时,我遇到了这个问题。注意,promo_id和promo_name在任何索引中都没有问题,这是因为我得到了属性值。其他的我得到了文本元素。
有什么想法吗?
1条答案
按热度按时间dced5bon1#
您可以尝试使用他们的Ajax API加载产品HTML:
印刷品: