HTML синтаксический анализ div.p.ol возвращает пустое значение в Python - PullRequest
1 голос
/ 04 августа 2020

Основываясь на приведенном ниже снимке экрана, я пытаюсь получить метку «ol» в качестве тега заголовка, чтобы затем я мог запустить для l oop со всеми тегами «li» под ним, чтобы получить содержимое / адреса "aria-label" s.

Однако мой код возвращает пустой. Кто-нибудь знает, как я могу заставить этот "ол" действовать как заголовок? Очень признателен !!

import requests
from bs4 import BeautifulSoup

# website
sitemap = 'https://www.walmart.com/store/finder?location=87321&distance=100'
# content of website
sitemap_content = requests.get(sitemap).content
# parsing website
soup = BeautifulSoup(sitemap_content, 'html.parser')
#print(soup)
header_div = soup.div.ol.li
print(header_div)

скриншот элемента проверки

1 Ответ

0 голосов
/ 04 августа 2020

Данные, которые вы видите на странице, хранятся как Json внутри элемента <script>.

import json
import requests
from bs4 import BeautifulSoup


url = 'https://www.walmart.com/store/finder?location=02468&distance=100'
soup = BeautifulSoup(requests.get(url).content, 'html.parser')
data = json.loads(soup.select_one('#storeFinder').string)

# uncomment this to print all data:
# print(json.dumps(data, indent=4))

# print some data to screen:
for store in data['storeFinder']['storeFinderCarousel']['stores']:
    print(store['displayName'])
    print(store['address']['address'])
    print(store['address']['postalCode'], store['address']['city'])
    print('-' * 80)

Печать:

Framingham Store
121 Worcester Rd
01701 Framingham
--------------------------------------------------------------------------------
Walpole Supercenter
550 Providence Hwy
02081 Walpole
--------------------------------------------------------------------------------
Quincy Store
301 Falls Blvd
02169 Quincy
--------------------------------------------------------------------------------

...and so on.
...