Очистка данных с Python и получение дерева html, отличного от DevTools - PullRequest
1 голос
/ 11 апреля 2020

Я пытаюсь удалить данные с сайта zara.com, я уже выясняю, как анализировать родительские элементы с группой элементов в списке, но я хочу покопаться глубже и открыть каждую ссылку на элемент и получить дополнительные информация об этом.

Итак, я использовал для него такой код:

import requests
import time
from bs4 import BeautifulSoup



ListWithRequests = ['https://www.zara.com/nl/en/plain-shirt-p06608389.html'] # In this example only one item

for item in ListWithRequests:

    response = requests.get(item,verify=False)
    soup2 = BeautifulSoup(response.text, "html.parser")
    soup2.prettify()
    time.sleep(1)
    f = open("demo.html","w+")
    f.write(response.text)

Например, я хочу получить цену товара, в инструментах разработчика это блок

<span class="main_price">25.95 EUR</span>

или идентификатор элемента

<div clas="product-info-wrapper _product-info">
  <p class="product-color">
    <span class="_colorName">**White**
    </span>
  </p>
</div>

Но в демонстрационном файле . html я получаю совершенно другое дерево и не могу найти элементы, которые Мне нужно.

Пожалуйста, посоветуйте, что я делаю не так

1 Ответ

0 голосов
/ 11 апреля 2020

Страница загружается через JavaScript, поэтому bs4 не сможет ее отобразить. вы можете использовать selenium для таких случаев, но я заметил, что данные, которые вы ищете, на самом деле представлены в теге script, который вы можете легко загрузить с помощью JSON или для быстрого улова, я используется re:

import requests
import re


def main(url):
    r = requests.get(url)
    price = re.search(r'\"price\": \"(.*?)\"', r.text).group(1)
    print(price)


main("https://www.zara.com/nl/en/plain-shirt-p06608389.html")

Выход:

25.95
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...