Невозможно извлечь правильный элемент в инструментах Chrome Dev при использовании Python - PullRequest
1 голос
/ 27 октября 2019

Я пытаюсь получить доступ к датам с этого сайта с помощью селекторов CSS, но это не позволяет мне. Я продолжаю получать эту ошибку: AttributeError: у объекта 'NoneType' нет атрибута 'select'

import requests
from bs4 import BeautifulSoup
page = requests.get("https://www.accuweather.com/en/us/san- 
antonio/78205/daily-weather-forecast/351198")
soup = BeautifulSoup(page.content, 'html.parser')
daily = soup.find(class_="content-module")
period_tags = daily.select(".date .dow")
periods = [pt.get_text() for pt in period_tags]
periods

Я ожидаю, что результат выдаст мне каждый из дней на веб-странице в виде списка

1 Ответ

0 голосов
/ 27 октября 2019

Мне нужен только один заголовок User-Agent. Тем не менее, контент генерируется динамически, поэтому html-ответ на ваши запросы не будет таким же, как на веб-странице, где может работать javascript. Вы можете извлечь необходимую информацию из тега script в ответе с помощью регулярных выражений, а затем проанализировать с помощью json parser

import requests, re , json

headers = {'User-Agent': 'Mozilla/5.0'}
r = requests.get('https://www.accuweather.com/en/us/san-%20antonio/78205/daily-weather-forecast/351198', headers=headers)
p = re.compile(r'var dailyForecast = (.*);')
data = json.loads(p.findall(r.text)[0])
#print(data)
forecasts = {i['dow'] + ' - ' + i['date']:i['day'] for i in data}
print(forecasts)
dows  = [i['dow'] for i in data]
print(dows)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...