Почему мой скребок не возвращает ни одного с BeautifulSoup? - PullRequest
0 голосов
/ 11 ноября 2019

Я пытаюсь извлечь таблицу с этого сайта https://www.solarreviews.com/solar-panels/solar-panel-cost/ цену солнечной энергии из каждого штата и передать ее в файл CSV. Вот код до сих пор. Это возвращает «Нет». Может кто-нибудь, пожалуйста, объясните мне, почему? И что делать? Я был бы очень признателен за это.

from bs4 import BeautifulSoup as soup
import csv

#Open page and grab HTML
my_url = ('https://www.solarreviews.com/solar-panels/solar-panel-cost/')
uClient = uReq(my_url)
page_html = uClient.read()
uClient.close()

#HTML parser
page_soup = soup(page_html, 'html.parser')

#Find table
ele_table = page_soup.find('table',{"class":"table table-hover stateAveragesTable"})

print(ele_table)```

1 Ответ

1 голос
/ 11 ноября 2019

Вам нужно изменить атрибуты стиля tr, чтобы все отображалось. Обратите внимание, что вы также рискуете заблокировать IP-адрес, если делаете слишком много запросов.

import requests,re
from bs4 import BeautifulSoup as bs
import pandas as pd

r = requests.get('https://www.solarreviews.com/solar-panels/solar-panel-cost/')
soup = bs(r.content, 'lxml')
table_html = str(soup.select_one('.stateAveragesTable'))
table_html = re.sub('display: none;','', table_html)
print(pd.read_html(str(table_html)))
...