У меня возникли проблемы добавления данных в список, как я перебирать следующее:Уплотненный, Same-Level For Loop, выход к списку
import urllib
import urllib.request
from bs4 import BeautifulSoup
import pandas
def make_soup(url):
thepage = urllib.request.urlopen(url)
thepage.addheaders = [('User-Agent', 'Mozilla/5.0')]
soupdata = BeautifulSoup(thepage, 'html.parser')
return soupdata
soup = make_soup('https://www.wellstar.org/locations/pages/default.aspx')
locationdata = []
for table in soup.findAll('table', class_ = 's4-wpTopTable'):
for name in table.findAll('div', 'PurpleBackgroundHeading'):
name = name.get_text(strip = True)
for loc_type in table.findAll('h3', class_ = 'WebFont SpotBodyGreen'):
loc_type = loc_type.get_text()
for address in table.findAll('div', class_ = ['WS_Location_Address', 'WS_Location_Adddress']):
address = address.get_text(strip = True, separator = ' ')
locationdata.append([name, loc_type, address])
df = pandas.DataFrame(columns = ['name', 'loc_type', 'address'], data = locationdata)
print(df)
Производимый dataframe включает в себя все уникальные адреса, однако только последний возможный текст, соответствующий name
.
Например, несмотря на то, что «WellStar Windy Hill Hospital» является последней больницей в категории/типе больницы, она появляется как название для всех больниц. Если это возможно, я предпочитаю решение list.append
, так как у меня есть еще несколько аналогичных шагов для завершения этого проекта.
Я чувствую, что это близко, однако, желаемый результат должен включать loc_type для каждого местоположения, адреса комбинации. Как мы можем включить эту информацию в запись? – Daniel
Я дал вам шаги, чтобы поместить ваши данные в список, но вы должны убедиться, что вы извлекаете нужные данные со страницы. – bernie