Я пытаюсь очистить эту страницу , чтобы извлечь подробную информацию о каждом теге [li] внутри [ol id = "price"]. Проблема в том, что в возвращенном коде. html есть пустые теги. В частности, в каждом [li] содержимое тега [div class = "shop cf"] не возвращается. Я использовал запросы и BeautifulSoup для этого следующим образом:
import requests
import time
from bs4 import BeautifulSoup
headers = {
"Connection": "keep-alive",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
}
url = "https://www.skroutz.gr/s/11706397/Guy-Laroche-Linda-Red.html"
page = requests.get(url, headers=headers )
# i also tried the following two commands in order to wait for the page to load
#seconds = 10
#page = requests.get(url, time.sleep(seconds), headers=headers)
soup = BeautifulSoup(page.content, 'html.parser')
eshops_grid = soup.find("ol", id="prices")
eshops_product = eshops_grid.findAll("li", class_='cf card js-product-card')
for eshop in eshops_product[0:]:
eshop_name = eshop.find("div", class_="shop-name").text
print(eshop_name) # I need to print the eshop_name for each eshop
Хотя мне нужно сделать это с помощью библиотеки запросов, я также использовал селен по этой причине, но возникает та же проблема.
from selenium import webdriver
from pyvirtualdisplay import Display
from bs4 import BeautifulSoup
# We are opening a browser but not visible
print('- Open a browser but not visible ')
display = Display(visible=0, size=(1920, 1080))
display.start()
driver = webdriver.Chrome("/usr/lib/chromium-browser/chromedriver")
url = 'https://www.skroutz.gr/s/11706397/Guy-Laroche-Linda-Red.html?o=%CE%9C%CF%80%CE%BF%CF%85%CF%81%CE%BD%CE%BF%CF%8D%CE%B6%CE%B9%20Guy%20Laroche%20Linda%20Red'
#print('- Get the initial url of brandwatch')
driver.get(url)
page = driver.page_source
soup = BeautifulSoup(page, 'html.parser')
eshops_grid = soup.find("ol", id="prices")
eshops_product = eshops_grid.findAll("li", class_='cf card js-product-card')
for eshop in eshops_product[0:]:
eshop_name = eshop.find("div", class_="shop-name").text
print(eshop_name) # I need to print the eshop_name for each eshop
Есть ли способ получить все содержимое каждого ["li"], чтобы извлечь и распечатать 'eshop_name'?