首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有不等实体的嵌套For循环

具有不等实体的嵌套For循环
EN

Stack Overflow用户
提问于 2016-09-19 16:44:49
回答 1查看 78关注 0票数 0

我想刮一下具有类似结构的网站的内容

https://www.wellstar.org/locations/pages/default.aspx

使用提供的网站作为一个框架,我想提取位置的名称和与该位置相关的标题。我希望能够制作以下内容:

WellStar医院

亚特兰大卫斯塔尔医疗中心

WellStar医院

南亚特兰大医疗中心

..。

WellStar健康公园

阿克沃思健康公园

..。

到目前为止,我尝试了一个嵌套的for循环:

代码语言:javascript
复制
for type in soup.find_all("h3",class_="WebFont SpotBodyGreen"):
    for name in soup.find_all("div",class_="PurpleBackgroundHeading"):
        print(type.text, name.text)

上面的for loop返回重复,因为每个名称与每种类型成对,而不管网站上的表示如何。任何帮助,无论是以代码和/或建议的资源的形式来处理这项任务,都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-19 17:07:46

您需要一种按名称对位置进行分组的方法。为此,我们将每个块分开,将标题和位置收集到字典中:

代码语言:javascript
复制
from pprint import pprint

import requests
from bs4 import BeautifulSoup

url = "https://www.wellstar.org/locations/pages/default.aspx"
response = requests.get(url)
soup = BeautifulSoup(response.content, "html.parser")

d = {}
for row in soup.select(".WS_Content > .WS_LeftContent > table > tr"):
    title = row.h3.get_text(strip=True)

    d[title] = [item.get_text(strip=True) for item in row.select(".PurpleBackgroundHeading a")]

pprint(d)

打印(用pprint()打印得很漂亮):

代码语言:javascript
复制
{'WellStar Community Hospice': ['Tranquility at Cobb Hospital',
                                'Tranquility at Kennesaw Mountain'],
 'WellStar Health Parks': ['Acworth Health Park', 'East Cobb Health Park'],
 'WellStar Hospitals': ['WellStar Atlanta Medical Center',
                        'WellStar Atlanta Medical Center South',
                        'WellStar Cobb Hospital',
                        'WellStar Douglas Hospital',
                        'WellStar Kennestone Hospital',
                        'WellStar North Fulton Hospital',
                        'WellStar Paulding Hospital',
                        'WellStar Spalding Regional Hospital',
                        'WellStar Sylvan Grove Hospital',
                        'WellStar West Georgia Medical Center',
                        'WellStar Windy Hill Hospital'],
 'WellStar Urgent Care Centers': ['WellStar Urgent Care in Acworth',
                                  'WellStar Urgent Care in Kennesaw',
                                  'WellStar Urgent Care in Marietta - Delk '
                                  'Road',
                                  'WellStar Urgent Care in Marietta - East '
                                  'Cobb',
                                  'WellStar Urgent Care in Marietta - '
                                  'Kennestone',
                                  'WellStar Urgent Care in Marietta - Sandy '
                                  'Plains Road',
                                  'WellStar Urgent Care in Smyrna',
                                  'WellStar Urgent Care in Woodstock']}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39578130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档