BeautifulSoup - 如何让select元素按照页面顺序排列?

BeautifulSoup - How to select elements according to page order?

我实际上是在尝试为一个项目解析维基百科页面。我不知道如何使我的程序自动化,以便让他根据页面顺序获取元素。这是页面:https://fr.wikipedia.org/wiki/Manga.

我想获取 h2 标签和 p 标签的文本,顺序与它们在维基百科上的显示顺序相同。将来以 table 的正确顺序将它们放入数据库中(同一 lvl 上的行:1 个标题 --> 它的段落) 我尝试了循环并查看了 BeautifulSoup 的文档,但找不到解决方案。 这是我的实际代码:

import numbers
import urllib.request
from bs4 import BeautifulSoup 
quote_page ='https://fr.wikipedia.org/wiki/Manga#:~:text=Un%20manga%20(%E6%BC%AB%E7%94%BB)%20est%20une,quelle%20que%20soit%20son%20origine.'
page = urllib.request.urlopen(quote_page)
soup = BeautifulSoup(page, 'html.parser')

for element in soup.select('h2 ~ p'):
    for e in soup.select('h2 > span.mw-headline'):
        print(e.text)
        print(element.text)
#not working for the loops

原因问题/预期输出不是那么清楚,这应该指向一个可能的方向。

您可以 select 您的字幕,如果有特定标签,则迭代其 .next_siblingsbreak 迭代:

import urllib.request
from bs4 import BeautifulSoup 
quote_page ='https://fr.wikipedia.org/wiki/Manga#:~:text=Un%20manga%20(%E6%BC%AB%E7%94%BB)%20est%20une,quelle%20que%20soit%20son%20origine.'
page = urllib.request.urlopen(quote_page)
soup = BeautifulSoup(page, 'html.parser')

for e in soup.select('h2 span.mw-headline'):
    print(e.text)
    for t in e.parent.next_siblings:
        if t.name in ['h2','h4']:
            break
        if t.name == 'p':
            print(t.text)

输出:

Étymologie
Le mot japonais « manga » souvent traduit littéralement par « image dérisoire » ou « dessin non abouti », est composé de « ga » (画), qui désigne la représentation graphique (« dessin », « peinture » ou toute image dessinée — comme l'estampe), et « man » (漫), « involontaire », « divertissant », « sans but », mais aussi « exagérer », « déborder » (qui peut être interprété comme caricature), ainsi qu'« au fil de l'idée ». Ainsi on pourrait aussi bien traduire ce mot par « dessin au trait libre », « esquisse au gré de la fantaisie », « image malhabile » ou tout simplement caricature ou grotesque dans le sens de Léonard de Vinci.

Le terme devient courant à partir de la fin du XVIIIe siècle avec la publication d'ouvrages tels que Mankaku zuihitsu (1771) de Kankei Suzuki, Shiji no yukikai (1798) de Kyōden Santō ou Manga hyakujo (1814) de Minwa Aikawa. Également en 1814, Hokusai, futur graveur de La Grande Vague de Kanagawa, donne à ses recueils d'estampes parfois grotesques le titre Hokusai manga. C'est ce dernier ouvrage qui fait connaître le mot en Occident. Il aurait été ainsi choisi pour son analogie avec un terme similaire dans l'ancien temps mais dont l'écriture diffère, et qui décrit la conservation de proies dans les becs des pélicans[7] indiquant des scènes prises sur le vif — comme l'oiseau fondant sur sa proie.

Il ne prend le sens précis de « bande dessinée » qu'au cours du XXe siècle, avec l'introduction de celle-ci au Japon. Lorsqu'elle y devient très populaire, après 1945 et grâce à Osamu Tezuka, le terme s'impose pour finir par ne plus désigner qu'elle. C'est ce terme qui a été utilisé à l'étranger (France, États-Unis, Allemagne, etc.), pour caractériser la bande dessinée japonaise, dont il est devenu un synonyme, et parfois grossièrement ramené à un genre.

Genre et nombre du mot « manga » en français
Le mot « manga » est pleinement intégré dans la langue française, comme l'atteste son intégration dans les dictionnaires usuels. Ceux-ci le donnent comme masculin (les mots japonais, eux, n'ont pas de genre grammatical), et c'est le genre qui prédomine largement. Toutefois, la première utilisation du mot en français revient à Edmond de Goncourt en 1895, dans une étude artistique dédiée à Hokusai[8], où il accorde « manga » au féminin pour désigner ce qu'il appela La Mangwa (sic) de l'artiste. Le terme revêtait alors plutôt le sens de « miscellanées », c'est-à-dire un recueil de nature disparate[9]. Depuis cette époque, manga a souvent été employé au féminin, et ce jusqu'à la popularisation de l'usage au masculin dans les années 1990 (notamment par les premiers journaux spécialisés et la télévision)[9]. Mais un argument en faveur de la féminisation du terme pourrait être que la locution équivalente en français, bande dessinée, est déjà de genre féminin. Plus récemment, l'auteur Frédéric Boilet parle de manga au féminin, notamment dans le cadre de son mouvement franco-japonais La Nouvelle Manga[10]
...