簡體   English   中英

美麗的湯選擇兄弟姐妹不工作

[英]Beautiful soup select siblings not working

我正在嘗試從網站上的某個代碼層返回所有文本。 但是,當我嘗試任何.contents.children.find_next_sibling它總是返回我使用的過濾器標簽下的一切。

我正在嘗試從以下位置獲取下拉菜單中的選項: http : //www.arrondissement.com/abitibi_temiscamingue/s1-alimentation/

我的代碼:

class get_region():
    URL = urlopen("http://www.arrondissement.com/plateau_mont_royal/s1-alimentation/")
    soup = BeautifulSoup(URL, "html.parser").find(class_="subArrow", onmouseover="dzelo.ui.openChildMenu(this)") #find(class_="dropcss3Selector")

    for string in soup.next_sibling:
        print(string.text)

我試圖提取的數據來自 javascript 下拉菜單,也許這就是問題所在? 最終目標是使用 wtforms 在我的應用程序中重新創建下拉菜單,因此我需要將父選項與子選項分開。 謝謝你的幫助!

解析下拉菜單和菜單項有點復雜。

這是一個示例實現:

from pprint import pprint
from urllib.request import urlopen

from bs4 import BeautifulSoup

URL = urlopen("http://www.arrondissement.com/plateau_mont_royal/s1-alimentation/")
soup = BeautifulSoup(URL, "html.parser")

data = {}
divisions = soup.select("ul[name=divisions_form] ul > li")
for division in divisions:
    data[division.a.get_text(strip=True)] = [
        subitem.a.get_text(strip=True) for subitem in division.select(".divisionDDM > li")
    ]

pprint(data)

印刷:

{'Abitibi-Témiscamingue': ['Rouyn-Noranda', 'Témiscamingue', "Val-d'Or"],
 'Agglomération de Longueuil': ['Boucherville',
                                'Brossard',
                                'Greenfield Park',
                                'Longueuil',
                                'Saint-Bruno',
                                'Saint-Hubert',
                                'Saint-Lambert'],
 'Ahuntsic-Cartierville': [],
 'Alma': [],
 'Anjou': [],
 'Baie-Comeau': [],
 'Bas-Saint-Laurent': ['Rimouski', 'Rivière-du-Loup'],
 'Beaconsfield': [],
 'Beloeil': [],
 'Blainville': [],
 'Boisbriand': [],
 'Boucherville': [],
 'Brossard': [],
 'Capitale-Nationale': ['Québec'],
 'Centre-du-Québec': ['Drummondville', 'Victoriaville'],
 'Chambly': [],
 'Chaudière-Appalaches': ['Lévis', 'Saint-Georges', 'Thetford Mines'],
 'Chicoutimi': [],
 'Châteauguay': [],
 'Côte Saint-Luc': [],
 'Côte-Nord': ['Baie-Comeau', 'Sept-Îles'],
 'Côte-des-Neiges—Notre-Dame-de-Grâce': [],
 'Dollard-des-Ormeaux': [],
 'Dorval': [],
 'Drummondville': [],
 'Estrie': ['Magog', 'Sherbrooke'],
 'Gaspé': [],
 'Gaspésie-Îles-de-la-Madeleine': ['Gaspé', 'Îles-de-la-Madeleine'],
 'Gatineau': [],
 'Granby': [],
 'Greenfield Park': [],
 'Joliette': [],
 'Jonquière': [],
 'Kirkland': [],
 "L'Assomption": [],
 'La Baie': [],
 'La Prairie': [],
 'LaSalle': [],
 'Lachine': [],
 'Lanaudière': ['Joliette',
                "L'Assomption",
                'Mascouche',
                'Repentigny',
                'Terrebonne'],
 'Laurentides': ['Blainville',
                 'Boisbriand',
                 'Mirabel',
                 'Sainte-Thérèse',
                 'Saint-Eustache',
                 'Saint-Jérôme'],
 'Laval': [],
 'Le Plateau-Mont-Royal': [],
 'Le Sud-Ouest': [],
 'Longueuil': [],
 'Lévis': [],
 'L’Île-Bizard—Sainte-Geneviève': [],
 'Magog': [],
 'Mascouche': [],
 'Mauricie': ['Shawinigan', 'Trois-Rivières'],
 'Mercier—Hochelaga-Maisonneuve': [],
 'Mirabel': [],
 'Mont-Royal': [],
 'Montréal': ['Ahuntsic-Cartierville',
              'Anjou',
              'Beaconsfield',
              'Côte-des-Neiges—Notre-Dame-de-Grâce',
              'Côte Saint-Luc',
              'Dollard-des-Ormeaux',
              'Dorval',
              'L’Île-Bizard—Sainte-Geneviève',
              'Kirkland',
              'Lachine',
              'LaSalle',
              'Mercier—Hochelaga-Maisonneuve',
              'Montréal-Nord',
              'Mont-Royal',
              'Outremont',
              'Pierrefonds-Roxboro',
              'Le Plateau-Mont-Royal',
              'Pointe-Claire',
              'Rivière-des-Prairies—Pointe-aux-Trembles',
              'Rosemont—La Petite-Patrie',
              'Saint-Laurent',
              'Saint-Léonard',
              'Le Sud-Ouest',
              'Verdun',
              'Ville-Marie',
              'Villeray—Saint-Michel—Parc-Extension',
              'Westmount'],
 'Montréal-Nord': [],
 'Montérégie': ['Beloeil',
                'Chambly',
                'Châteauguay',
                'Granby',
                'La Prairie',
                'Saint-Constant',
                'Sainte-Julie',
                'Saint-Hyacinthe',
                'Saint-Jean-sur-Richelieu',
                'Salaberry-de-Valleyfield',
                'Sorel-Tracy',
                'Varennes',
                'Vaudreuil-Dorion'],
 'Nord-du-Québec': [],
 'Outaouais': ['Gatineau'],
 'Outremont': [],
 'Pierrefonds-Roxboro': [],
 'Pointe-Claire': [],
 'Québec': [],
 'Repentigny': [],
 'Rimouski': [],
 'Rivière-des-Prairies—Pointe-aux-Trembles': [],
 'Rivière-du-Loup': [],
 'Rosemont—La Petite-Patrie': [],
 'Rouyn-Noranda': [],
 'Saguenay-Lac-Saint-Jean': ['Alma', 'Chicoutimi', 'Jonquière', 'La Baie'],
 'Saint-Bruno': [],
 'Saint-Constant': [],
 'Saint-Eustache': [],
 'Saint-Georges': [],
 'Saint-Hubert': [],
 'Saint-Hyacinthe': [],
 'Saint-Jean-sur-Richelieu': [],
 'Saint-Jérôme': [],
 'Saint-Lambert': [],
 'Saint-Laurent': [],
 'Saint-Léonard': [],
 'Sainte-Julie': [],
 'Sainte-Thérèse': [],
 'Salaberry-de-Valleyfield': [],
 'Sept-Îles': [],
 'Shawinigan': [],
 'Sherbrooke': [],
 'Sorel-Tracy': [],
 'Terrebonne': [],
 'Thetford Mines': [],
 'Tout Arrondissement.com': [],
 'Trois-Rivières': [],
 'Témiscamingue': [],
 "Val-d'Or": [],
 'Varennes': [],
 'Vaudreuil-Dorion': [],
 'Verdun': [],
 'Victoriaville': [],
 'Ville-Marie': [],
 'Villeray—Saint-Michel—Parc-Extension': [],
 'Westmount': [],
 'Îles-de-la-Madeleine': []}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM