Получение ошибки для find_all в webscrape - PullRequest
0 голосов
/ 19 апреля 2020

Попытка очистить этот веб-сайт, чтобы получить имя штата, случаи, случаи смерти, которые нужно передать в CSV-файл, но при запуске программы появляется сообщение об ошибке:

page = requests.get("https://www.cnn.com/interactive/2020/health/coronavirus-us-maps-and-cases/")
soup = BeautifulSoup(page.content, 'html.parser')

state_table = soup.find(id='root')

items = state_table.find(class_='region-table-list')

states = [s.get_text() for s in items.find_all(class_='region')]

case = [c2.get_text() for c2 in items.find_all(class_='cases numeric')]

deaths = [c2.get_text() for c2 in items.find_all(class_ = 'deaths numeric')]


details = pd.DataFrame(
   {'State': states,
    'Cases': case,
    'Death': deaths,
    }
)
details.to_csv('details.csv') 

    states = [s.get_text() for s in items.find_all(class_='region')]
    AttributeError: 'NoneType' object has no attribute 'find_all'

Ответы [ 2 ]

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

Если вы напечатаете soup, вы обнаружите, что искомая информация недоступна. Это связано с тем, что информация выбирается страницей с использованием JavaScript. Который в свою очередь запрашивает другой URL, который предоставляет данные в формате JSON.

import requests
import json
import pandas as pd

page = requests.get("https://ix.cnn.io/data/novel-coronavirus-2019-ncov/us/states.json")

js_resp=json.loads(page.text)

states=[]
case=[]
deaths=[]

for item in js_resp['data']:
    states.append(item['name'])
    case.append(item['cases'])
    deaths.append(item['deaths'])

details = pd.DataFrame(
   {'State': states,
    'Cases': case,
    'Death': deaths,
    }
)

details.to_csv('details.csv') 
0 голосов
/ 19 апреля 2020

Ошибка означает, что переменная items, которую вы создаете,

items = state_table.find(class_='region-table-list')

возвращает None.

Пожалуйста, попробуйте исправить ее.

С уважением, Diwakar

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