I have this Wikipedia category page: https://fr.wikipedia.org/wiki/Cat%C3%A9gorie:Pi%C3%A8ce_de_th%C3%A9%C3%A2tre_du_XVIIIe_si%C3%A8cle
I'd like to open the page of each play listed (e.g. https://fr.wikipedia.org/wiki/L%27Oiseau_vert) and print the first sentence of it (e.g. L'Oiseau vert (L'augellino belverde) est une comédie de Carlo Gozzi (auteur italien de pièces de théâtre) parue en 1765). A dataframe with the play title in the 1st column and the first sentence in the 2nd one would also be good.
I tried to get all the page links through BeautifulSoup and print the first sentences with wikipedia.summary() but results are not satisfactory, since the wikipedia module often redirects to the wrong articles. Part of the problem may be caused by the French special characters within the play titles (é, â, etc.)
Is there a better method to access the individual articles directly from the category page?
This question seems related but hasn't helped me further.
There is a better method to access the individual articles directly from the category page: Wikipedia API!
You can try this:
import requests
url = "https://fr.wikipedia.org/w/api.php"
params = {
"action": "query",
"cmtitle": "Catégorie:Pièce de théâtre du XVIIIe siècle",
"cmlimit": "50",
"list": "categorymembers",
"format": "json"
}
req = requests.get(url=url, params=params)
pages = req.json()['query']['categorymembers']
# here just iterate over category individual pages
for page in pages:
# eg. page = {'pageid': 622757, 'ns': 0, 'title': 'Les Acteurs de bonne foi'}
_url = 'https://fr.wikipedia.org/w/api.php'
_params = {
'format': 'json',
'action': 'query',
'prop': 'extracts',
'exintro': True,
'explaintext': True,
'redirects': 1,
'pageids': page['pageid'],
}
req = requests.get(_url, _params)
summary = req.json()['query']['pages'][str(page['pageid'])]['extract']
In case of 'Les Acteurs de bonne foi' the summary returns:
'Les Acteurs de bonne foi est une comédie en un acte et en prose de
Marivaux, jouée pour la première fois chez Quinault cadette le 30
octobre 1748.\nMarivaux fit jouer les Acteurs de bonne foi au
Théâtre-Français en 1755, mais la pièce ne réussit pas. Elle fut
publiée pour la première fois dans le Conservateur de novembre 1757.
L’intérêt de la pièce repose principalement sur un jeu qu’entretient
Marivaux avec son lecteur grâce à la mise en abyme. En effet, le texte
mêle au sein d’une même page : entretien des acteurs sur leurs vies
respectives, dialogues sur les possibilités de jeu et de mise en scène
ainsi que répliques d’un texte qui est alors joué. Dans cette pièce,
qui est la dernière que l’auteur ait fait jouer sur un grand théâtre,
où la scène de comédie est rapidement détournée et donne lieu à une
confusion entre la situation réelle et la scène jouée, la mise en
abyme révèle l’importance de l’illusion théâtrale.'
Here's an example how you can achieve that using beautifulsoup only:
import requests
from bs4 import BeautifulSoup
def get_categories(data):
print("Getting categories...")
categories = {}
soup = BeautifulSoup(data, "lxml")
group_divs = soup.find_all("div", {"class": "mw-category-group"})
for div in group_divs:
links = div.find_all("a")
for link in links:
title = link.get("title")
href = link.get("href")
categories[title] = "https://fr.wikipedia.org" + href
print(f"Found Categories: {len(categories)}")
return categories
def get_first_paragraph(data):
soup = BeautifulSoup(data, "lxml")
parser_output = soup.find("div", {"class": "mw-parser-output"})
first_paragraph = parser_output.find("p", {"class": None}, recursive=False)
return first_paragraph.text
def process_categories(categories):
result = {}
for title, link in categories.items():
print(f"Processing Piece: {title}, on link: {link}")
data = requests.get(link).content
first_paragraph = get_first_paragraph(data)
result[title] = first_paragraph.strip()
return result
def clean_categories(categories):
return {k: v for k, v in categories.items() if "Catégorie" not in k}
def main():
categories_url = "https://fr.wikipedia.org/wiki/Cat%C3%A9gorie:Pi%C3%A8ce_de_th%C3%A9%C3%A2tre_du_XVIIIe_si%C3%A8cle"
data_categories = requests.get(categories_url).content
categories = get_categories(data_categories)
categories = clean_categories(categories)
result = process_categories(categories)
print(result) # create dataframe etc...
if __name__ == "__main__":
main()
The code is self-explanatory:
First we find divs that have category-group class, extract all a elements and get title and href
Then for each category i.e. piece we parse HTML and get the first p in the div with mw-parser-output class (That should be the first sentence).
Note: I added clean_categories since category-group picked up unwanted things that had Catégorie in them.
Example of output for first couple of pieces:
Getting categories...
Found Categories: 198
Processing Piece: Les Acteurs de bonne foi, on link: https://fr.wikipedia.org/wiki/Les_Acteurs_de_bonne_foi
Processing Piece: Adamire ou la Statue de l'honneur, on link: https://fr.wikipedia.org/wiki/Adamire_ou_la_Statue_de_l%27honneur
Processing Piece: Agamemnon (Lemercier), on link: https://fr.wikipedia.org/wiki/Agamemnon_(Lemercier)
Processing Piece: Agathocle (Voltaire), on link: https://fr.wikipedia.org/wiki/Agathocle_(Voltaire)
And Result:
{"Adamire ou la Statue de l'honneur": "Adamire ou la Statue de l'honneur est "
'la traduction par Thomas-Simon '
'Gueullette de la pièce de théâtre '
"italienne l'Adamira overo la Statua "
"dell'Honore de Giacinto Andrea "
'Cicognini représentée pour la première '
'fois en France le 12 décembre 1717 à '
"Paris, à l'Hôtel de Bourgogne.",
'Agamemnon (Lemercier)': 'Agamemnon est une tragédie en cinq actes considérée '
"comme le chef-d'œuvre dramatique de Népomucène "
'Lemercier. Elle fut représentée au Théâtre de la '
'République le 5 floréal an V (24 avril 1797) et '
'valut à son auteur une célébrité immédiate.',
'Agathocle (Voltaire)': 'Agathocle est une tragédie écrite par Voltaire, '
'représentée pour la première fois le 31 mai 1779, '
'sur la scène de la Comédie-Française.',
'Les Acteurs de bonne foi': 'Les Acteurs de bonne foi est une comédie en un '
'acte et en prose de Marivaux, jouée pour la '
'première fois chez Quinault cadette le 30 '
'octobre 1748.'}
Related
I am stucked at scraping some content from a website where I need to retrieve from this html code all the text that are between
<p class = some_string> Text I want to Retrieve </p>.
I need to use BeautifulSoup to retrieve all the text elements. The html code is attached below as a image:
As you can see there are many rows of the body that has text and I would like to get all that information. There is no table class or id for the body I am trying to scrape, so I can`t find the elements inside the table (as far as I know, but my knowledge of BS is pretty shallow so far, so if there are other ways around to tackle this problem I would appreciate a lot different approachment).
It is important to see that the class for each p element can change.
So far, the code I have tried to use to get this text to no avail is the following:
from bs4 import BeautifulSoup
import requests
link = 'http://agence-prd.ansm.sante.fr/php/ecodex/frames.php?specid=61350428&typedoc=R&ref=R0390743.htm'
req = requests.get(link)
soup = BeautifulSoup(req.content)
text_elements = soup.findAll('p')
for text_element in text_elements:
text = text_element.text
print(text)
Any suggestion on how to resolve this issue?
Thanks a lot in advance for the help!!!
The issue is that you're not receiving the fully loaded html*. You'll get better results if you set the http://agence-prd.ansm.sante.fr/php/ecodex/rcp/R0390743.htm as link - it's where the page from your code is fetching and loading its contents from anyway. If you're receiving the link from somewhere else and need to automate the transformation, you can do something like
# link = 'http://agence-prd.ansm.sante.fr/php/ecodex/frames.php?specid=61350428&typedoc=R&ref=R0390743.htm' # your link
linkStart = '/'.join(link.split('/')[:-1])
refParam = link.split('?', 1)[-1].split('ref=',1)[-1].split('&')[0].split('.')[0]
link = f'{linkStart}/rcp/{refParam}.htm' # my link
req = requests.get(link)
soup = BeautifulSoup(req.content)
# rest of your code
Btw, if you're just getting all the text, you might as well use soup.body.text directly, but also, if you want all the texts from the separate p tags in one variable, you can use join with list comprehension
pTexts = '\n'.join([p.text for p in soup.findAll('p')])
print(pTexts)
it should have the same output as printing in a loop as you were
RÉSUMÉ DES CARACTÉRISTIQUES DU PRODUIT
ANSM - Mis à jour le : 22/06/2022
1. DENOMINATION DU MEDICAMENT
ZYRTEC 2,5 mg/2,5 ml, solution buvable en flacon
2. COMPOSITION QUALITATIVE ET QUANTITATIVE
Chaque ml de solution buvable en flacon contient 1 mg de dichlorhydrate de cétirizine.
Excipients à effet notoire :
· un ml de solution contient 450 mg de sorbitol (solution à 70 %, non cristallisable)
· un ml de solution contient 1,35 mg de parahydroxybenzoate de méthyle
· un ml de solution contient 0,15 mg de parahydroxybenzoate de propyle.
Pour la liste complète des excipients, voir rubrique 6.1.
3. FORME PHARMACEUTIQUE
Solution buvable.
Liquide limpide et incolore avec un goût légèrement sucré et un arôme banane.
4. DONNEES CLINIQUES
4.1. Indications thérapeutiques
Le dichlorhydrate de cétirizine 2,5 mg/2,5 ml, solution buvable en flacon est indiqué chez l'adulte et l’enfant à partir de 2 ans :
· dans le traitement des symptômes nasaux et oculaires des rhinites allergiques saisonnières et perannuelles ;
· dans le traitement des symptômes de l'urticaire chronique idiopathique.
4.2. Posologie et mode d'administration
Posologie
10 mg une fois par jour (10 ml de solution buvable (2 cuillères pleines)).
Populations particulières
Sujets âgés
Il n’y a pas lieu d’ajuster la posologie chez le sujet âgé dont la fonction rénale est normale.
Insuffisance rénale
Les données disponibles ne permettent pas de documenter le rapport bénéfice/risque en cas d’insuffisance rénale. Compte tenu de l’élimination essentiellement rénale de la cétirizine (voir rubrique 5.2.), et s’il ne peut être utilisé de traitement alternatif, l'intervalle entre les prises doit être ajusté selon la fonction rénale. La posologie doit être ajustée comme indiqué dans le tableau ci-après.
Adaptation posologique chez les patients atteints d'insuffisance rénale :
Insuffisance hépatique
Aucun ajustement de la dose n’est nécessaire chez les patients atteints d’insuffisance hépatique isolée. Chez les patients atteints d'insuffisance hépatique associée à une insuffisance rénale, un ajustement de la dose est recommandé (voir rubrique « Insuffisance rénale » ci-dessus).
Population pédiatrique
Enfants de 2 à 6 ans : 2,5 mg deux fois par jour (2,5 ml de solution orale deux fois par jour (une demie cuillère deux fois par jour)).
Enfants de 6 à 12 ans : 5 mg deux fois par jour (5 ml de solution orale deux fois par jour (une cuillère deux fois par jour)).
Adolescents de plus de 12 ans : 10 mg une fois par jour (10 ml de solution orale deux fois par jour (2 cuillères deux fois par jour)).
Chez l’enfant présentant une insuffisance rénale, la posologie sera ajustée individuellement en fonction de la clairance rénale, de l’âge et du poids corporel du patient.
Mode d’administration
La solution peut être avalée telle quelle sans dilution.
4.3. Contre-indications
Hypersensibilité à la substance active ou à l’un des excipients mentionnés à la rubrique 6.1, à l’hydroxyzine ou aux dérivés de la pipérazine.
Patients atteints d’insuffisance rénale en stade terminal avec un taux de filtration glomérulaire (DFG) estimé inférieur à 15 ml/min.
4.4. Mises en garde spéciales et précautions d'emploi
Aux doses thérapeutiques, aucune interaction cliniquement significative n'a été mise en évidence avec la prise d'alcool (pour des concentrations sanguines d'alcool allant jusqu’à 0,5 g/l). Cependant, la prudence est recommandée en cas de prise concomitante d'alcool.
Des précautions doivent être prises chez les patients avec des facteurs prédisposant à la rétention urinaire (par ex. lésion de la moelle épinière, hyperplasie prostatique) étant donné que la cétirizine peut augmenter le risque de rétention urinaire.
La cétirizine doit être administrée avec prudence chez les patients épileptiques ou à risque de convulsions.
Les parahydroxybenzoates de propyle et de méthyle sont susceptibles de provoquer des réactions allergiques (éventuellement retardées).
Les patients présentant une intolérance héréditaire au fructose (IHF) ne doivent pas prendre ce médicament.
La réponse aux tests allergiques cutanés est inhibée par les antihistaminiques et une période de 3 jours sans traitement est nécessaire avant de les réaliser.
Un prurit et/ou une urticaire peuvent se déclarer lors de l’arrêt de la cétirizine, même si les symptômes n’étaient pas présents avant le début du traitement. Dans certains cas, les symptômes peuvent être intenses et nécessiter la reprise du traitement. Les symptômes devraient disparaître lors de la reprise du traitement.
Population pédiatrique
En raison de la quantité de certains excipients dans la composition, l’utilisation de ce médicament n’est pas recommandée chez l’enfant de moins de 2 ans.
4.5. Interactions avec d'autres médicaments et autres formes d'interactions
Compte tenu des données de pharmacocinétique, de pharmacodynamie et du profil de tolérance de la cétirizine, aucune interaction n’est attendue avec cet antihistaminique. À ce jour, aucune interaction pharmacodynamique ou pharmacocinétique significative n'a été rapportée lors des études d'interactions médicamenteuses réalisées notamment avec la pseudoéphédrine ou la théophylline (400 mg/jour).
Le taux d’absorption de la cétirizine n’est pas diminué par l’alimentation, bien que la vitesse d’absorption soit réduite.
La prise concomitante d'alcool ou d'autres dépresseurs du système nerveux central (SNC) peut entraîner une altération de la vigilance ou des performances chez les patients sensibles, bien que la cétirizine ne potentialise pas les effets de l’alcool (à une concentration sanguine de 0,5 g/l).
4.6. Fertilité, grossesse et allaitement
Grossesse
Les données prospectives recueillies concernant l’issue des grossesses exposées à la cétirizine ne suggèrent pas un potentiel toxique maternel ou embryo-fœtal supérieur à celui de la population générale.
Les études menées chez l’animal n’ont pas révélé d’effet néfaste direct ou indirect sur la gestation, le développement embryonnaire et fœtal, la parturition et le développement post-natal.
La prudence est recommandée lors de la prescription chez la femme enceinte.
Allaitement
La cétirizine passe dans le lait maternel. Un risque d’effets indésirables chez les nouveau-nés allaités ne peut pas être exclu. La cétirizine est excrétée dans le lait maternel humain à des concentrations de l’ordre de 25 % à 90 % de celles mesurées dans le plasma, selon le moment du prélèvement par rapport à l’administration. Par conséquent, la prudence est recommandée lors de la prescription de cétirizine chez la femme qui allaite.
Fertilité
Les données relatives à la fertilité humaine sont limitées mais aucun risque n’a été identifié.
Les données chez l’animal ne montrent pas de problème de sécurité pour la reproduction humaine.
4.7. Effets sur l'aptitude à conduire des véhicules et à utiliser des machines
Des mesures objectives de la capacité à conduire, du délai d’endormissement et des performances sur lignes d’assemblage n’ont pas démontré d’effets cliniquement pertinents à la dose recommandée de 10 mg. Cependant, les patients ressentant une somnolence ne devraient pas conduire de véhicules, prendre part à des activités potentiellement dangereuses ou utiliser des machines. Ils ne devraient pas dépasser la dose recommandée et devraient tenir compte de leur réponse au médicament.
4.8. Effets indésirables
Essais cliniques
Synthèse
Des effets indésirables sans gravité sur le système nerveux central, incluant somnolence, fatigue, sensations vertigineuses et céphalées ont été observés au cours des essais cliniques réalisés avec la cétirizine à la dose recommandée. Dans quelques cas, un effet paradoxal de stimulation du système nerveux central a été observé.
Malgré un effet antagoniste sélectif des récepteurs H1 périphériques et une relativement faible activité anticholinergique, des cas isolés de difficulté mictionnelle, de problèmes d'accommodation et de sécheresse buccale ont été rapportés.
Des cas d’anomalies de la fonction hépatique avec augmentation des enzymes hépatiques associée à une augmentation de la bilirubine ont été rapportés. Les anomalies ont régressé dans la plupart des cas avec l’arrêt du traitement par le dichlorhydrate de cétirizine.
Liste des effets indésirables
Plus de 3 200 sujets exposés à la cétirizine ont été inclus dans les essais cliniques contrôlés en double aveugle comparant la cétirizine à la posologie recommandée de 10 mg par jour, au placebo ou à d'autres antihistaminiques, pour lesquels des données quantifiées de tolérance sont disponibles.
Les effets indésirables rapportés sous cétirizine 10 mg pour l’ensemble de cette population au cours des essais contrôlés versus placebo, avec une incidence de 1,0 % ou plus, ont été les suivants :
La somnolence était statistiquement plus fréquente que sous placebo, mais d'intensité légère à modérée dans la majorité des cas. Des tests objectifs, validés par d'autres études, ont montré, chez le jeune volontaire sain, que les activités quotidiennes habituelles ne sont pas affectées à la dose journalière recommandée.
Population pédiatrique
Les effets indésirables rapportés avec une incidence de 1 % ou plus chez les enfants âgés de 6 mois à 12 ans inclus dans les essais cliniques contrôlés versus placebo sont les suivants :
Effets indésirables rapportés depuis la commercialisation
En plus des effets indésirables rapportés au cours des essais cliniques et listés ci-dessus, les effets indésirables suivants ont été rapportés depuis la commercialisation du produit.
Les effets indésirables sont décrits selon la convention MedDRA des classes de systèmes d’organes et par une estimation de leur fréquence depuis la commercialisation.
Les fréquences sont définies de la manière suivante : très fréquent (≥ 1/10) ; fréquent (≥ 1/100, < 1/10) ; peu fréquent (≥ 1/1 000, < 1/100) ; rare (≥ 1/10 000, < 1/1 000) ; très rare (< 1/10 000) ; fréquence indéterminée (ne peut être estimée sur la base des données disponibles).
Affections hématologiques et du système lymphatique
Très rare : thrombocytopénie
Affections du système immunitaire
Rare : hypersensibilité
Très rare : choc anaphylactique
Troubles du métabolisme et de la nutrition
Fréquence indéterminée : augmentation de l’appétit
Affections psychiatriques
Peu fréquent : agitation
Rare : agressivité, confusion, dépression, hallucination, insomnie
Très rare : tics
Fréquence indéterminée : idées suicidaires, cauchemars
Affections du système nerveux
Peu fréquent : paresthésie
Rare : convulsions
Très rare : dysgueusie, syncope, tremblements, dystonie, dyskinésie
Fréquence indéterminée : amnésie, troubles de la mémoire
Affections oculaires
Très rare : troubles de l'accommodation, vision floue, crises oculogyres
Affections de l’oreille et du labyrinthe
Fréquence indéterminée : vertige
Affections cardiaques
Rare : tachycardie
Affections gastro-intestinales
Peu fréquent : diarrhée
Affections hépatobiliaires
Rare : anomalie du bilan hépatique (augmentation des enzymes hépatiques : transaminases, phosphatases alcalines, gamma-GT et bilirubine)
Fréquence indéterminée : hépatite
Affections de la peau et du tissu sous-cutané
Peu fréquent : prurit, éruption cutanée
Rare : urticaire
Très rare : œdème angioneurotique, érythème pigmenté fixe
Indéterminée : pustulose exanthématique aiguë généralisée
Affections musculosquelettiques et du tissu conjonctif
Fréquence indéterminée : arthralgie, myalgie
Affections du rein et des voies urinaires
Très rare : dysurie, énurésie
Fréquence indéterminée : rétention urinaire
Troubles généraux et anomalies au site d'administration
Peu fréquent : asthénie, malaise
Rare : œdème
Fréquence indéterminée : syndrome de sevrage, y compris prurit et démangeaisons
Investigations
Rare : prise de poids.
Description de certains effets indésirables
Des cas de prurit (démangeaisons intenses) et/ou d’urticaire ont été rapportés après l’arrêt du traitement par cétirizine.
Déclaration des effets indésirables suspectés
La déclaration des effets indésirables suspectés après autorisation du médicament est importante. Elle permet une surveillance continue du rapport bénéfice/risque du médicament. Les professionnels de santé déclarent tout effet indésirable suspecté via le système national de déclaration : Agence nationale de sécurité du médicament et des produits de santé (ANSM) et réseau des Centres Régionaux de Pharmacovigilance - Site internet : www.signalement-sante.gouv.fr.
4.9. Surdosage
Symptômes
Les symptômes observés après un surdosage de cétirizine sont principalement associés à des effets sur le système nerveux central (SNC) ou des effets suggérant une action anticholinergique.
Les effets indésirables rapportés après la prise d'une dose au moins 5 fois supérieure à la dose quotidienne recommandée sont : confusion, diarrhée, sensations vertigineuses, fatigue, céphalées, malaise, mydriase, prurit, agitation, sédation, somnolence, stupeur, tachycardie, tremblements et rétention urinaire.
Conduite à tenir
Il n'existe pas d'antidote connu spécifique à la cétirizine.
En cas de surdosage, un traitement symptomatique ou des mesures de soutien sont recommandés. Un lavage gastrique peut être envisagé en cas d'ingestion récente.
La cétirizine n'est pas éliminée efficacement par hémodialyse.
5. PROPRIETES PHARMACOLOGIQUES
5.1. Propriétés pharmacodynamiques
Classe pharmacothérapeutique : Antihistaminiques à usage systémique, dérivés de la pipérazine, code ATC : R06AE07.
Mécanisme d’action
La cétirizine, métabolite humain de l'hydroxyzine, est un antagoniste puissant et sélectif des récepteurs H1 périphériques. Des études in vitro de liaison aux récepteurs n'ont pas révélé d’affinité mesurable pour d'autres récepteurs que les récepteurs H1.
Effets pharmacodynamiques
En association aux effets anti-H1, il a été démontré que la cétirizine présente une activité anti-allergique : administrée à la dose de 10 mg une ou deux fois par jour, elle inhibe la phase retardée de recrutement des éosinophiles au niveau de la peau et du tissu conjonctif des sujets atopiques soumis à des tests de provocation allergénique.
Efficacité et sécurité clinique
Les études menées chez le volontaire sain ont montré que la cétirizine, aux doses de 5 et 10 mg, inhibe fortement les réactions érythémato-papuleuses induites par des concentrations très élevées d'histamine au niveau de la peau. Cependant, la corrélation de l'efficacité avec ces observations n'est pas établie.
Dans une étude contrôlée versus placebo menée pendant six semaines chez 186 patients présentant une rhinite allergique et un asthme léger à modéré, la cétirizine 10 mg une fois par jour a amélioré les symptômes de la rhinite sans effet sur les fonctions pulmonaires. Cette étude met en évidence la sécurité d'emploi de la cétirizine chez les patients allergiques ayant un asthme léger à modéré.
Dans une étude contrôlée versus placebo, la cétirizine administrée à la dose quotidienne élevée de 60 mg pendant 7 jours n'a pas entraîné d’allongement statistiquement significatif de l'intervalle QT.
À la posologie recommandée, une amélioration de qualité de vie a été démontrée chez des patients traités par cétirizine ayant une rhinite allergique perannuelle et saisonnière.
Population pédiatrique
Dans une étude de 35 jours menée chez des enfants de 5 à 12 ans, il n’a pas été observé de diminution de l'effet antihistaminique (inhibition de l’érythème et des papules) de la cétirizine. À l'arrêt du traitement par la cétirizine après administration de doses répétées, la réactivité de la peau à l’histamine est rétablie en 3 jours.
5.2. Propriétés pharmacocinétiques
Absorption
Le pic des concentrations plasmatiques mesuré à l’état d’équilibre est d'environ 300 ng/ml et est atteint en 1,0 ± 0,5 h. La distribution des valeurs mesurées des paramètres pharmacocinétiques, tels que le pic plasmatique (Cmax) et l'aire sous la courbe (AUC), est unimodale.
La biodisponibilité de la cétirizine n'est pas modifiée par la prise alimentaire, bien que la vitesse d'absorption soit diminuée. La biodisponibilité de la cétirizine est équivalente lorsque la cétirizine est administrée sous forme de solution, gélule ou comprimé.
Distribution
Le volume apparent de distribution est de 0,50 l/kg. La liaison aux protéines plasmatiques de la cétirizine est de 93 ± 0,3 %. La cétirizine ne modifie pas la liaison de la warfarine aux protéines.
Biotransformation
La cétirizine ne subit pas d'effet important de premier passage hépatique.
Élimination
La demi-vie plasmatique terminale de la cétirizine est d'environ 10 heures et aucune accumulation de cétirizine n’est observée après administration de doses journalières de 10 mg pendant 10 jours. Environ les deux tiers de la dose administrée sont éliminés sous forme inchangée dans les urines.
Linéarité/non-linéarité
La cinétique de la cétirizine est linéaire pour des doses comprises entre 5 et 60 mg.
Insuffisance rénale : la pharmacocinétique de la molécule était similaire chez les patients ayant une insuffisance rénale légère (clairance de la créatinine supérieure à 40 ml/min) et chez les volontaires sains. Chez les patients avec une insuffisance rénale modérée, la demi-vie était augmentée d’un facteur de 3 et la clairance était diminuée de 70 % par rapport aux volontaires sains.
Chez les patients hémodialysés (clairance de la créatinine inférieure à 7 ml/min), la demi-vie était augmentée d’un facteur de 3 et la clairance était diminuée de 70 % par rapport aux sujets sains après administration d’une dose orale unique de 10 mg de cétirizine. La cétirizine n’était que très faiblement éliminée par hémodialyse. Un ajustement de la posologie est nécessaire en cas d'insuffisance rénale modérée ou sévère (voir rubrique 4.2).
Insuffisance hépatique : chez des patients atteints de maladies chroniques du foie (cirrhose d’origine hépatocellulaire, cholestatique et biliaire) recevant une dose unique de 10 ou 20 mg de cétirizine, la demi-vie était augmentée de 50 % avec une diminution de 40 % de la clairance comparativement aux sujets sains.
L'ajustement de la posologie est nécessaire en cas d'insuffisance hépatique seulement en cas d'insuffisance rénale associée.
Sujets âgés : après administration orale d'une dose unique de 10 mg de cétirizine chez 16 sujets âgés, la demi-vie a augmenté d'environ 50 % et la clairance a diminué de 40 % en comparaison aux sujets plus jeunes. La diminution de la clairance de la cétirizine chez ces sujets volontaires âgés semble liée à l'altération de leur fonction rénale.
Population pédiatrique : la demi-vie de la cétirizine est d'environ 6 heures chez les enfants de 6 à 12 ans et de 5 heures chez les enfants de 2 à 6 ans. Chez les nourrissons et les jeunes enfants âgés de 6 à 24 mois, celle-ci est réduite à 3,1 heures.
5.3. Données de sécurité préclinique
Les données non cliniques issues des études conventionnelles de pharmacologie de sécurité, toxicologie en administration répétée, génotoxicité, cancérogénèse, et des fonctions de reproduction et de développement, n’ont pas révélé de risque particulier pour l’homme.
6. DONNEES PHARMACEUTIQUES
6.1. Liste des excipients
Solution de sorbitol à 70 % (non cristallisable) (E420), glycérol, propylène glycol, saccharine sodique, parahydroxybenzoate de méthyle (E218), parahydroxybenzoate de propyle (E216), arôme banane 54.330/A (Firmenich), acétate de sodium, acide acétique glacial, eau purifiée.
6.2. Incompatibilités
Sans objet.
6.3. Durée de conservation
5 ans.
Après ouverture : 3 mois.
6.4. Précautions particulières de conservation
Ce médicament ne nécessite pas de précautions particulières de conservation.
6.5. Nature et contenu de l'emballage extérieur
Flacon en verre brun (Type III Ph. Eur.) de 60, 75, 100, 150 ou 200 ml fermé par un bouchon de sécurité enfant en polypropylène blanc.
Une cuillère-mesure de 5 ml graduée à 2,5 ml est fournie avec le flacon.
Toutes les présentations peuvent ne pas être commercialisées.
6.6. Précautions particulières d’élimination et de manipulation
Pas d’exigences particulières.
Tout médicament non utilisé ou déchet doit être éliminé conformément à la réglementation en vigueur.
7. TITULAIRE DE L’AUTORISATION DE MISE SUR LE MARCHE
UCB PHARMA S.A.
DEFENSE OUEST
420 RUE ESTIENNE D’ORVES
92700 COLOMBES
8. NUMERO(S) D’AUTORISATION DE MISE SUR LE MARCHE
· 34009 332 924 9 2 : 150 ml en flacon (verre brun) avec cuillère-mesure (polystyrène)
· 34009 333 019 8 9 : 60 ml en flacon (verre brun) avec cuillère-mesure (polystyrène)
9. DATE DE PREMIERE AUTORISATION/DE RENOUVELLEMENT DE L’AUTORISATION
[à compléter ultérieurement par le titulaire]
10. DATE DE MISE A JOUR DU TEXTE
[à compléter ultérieurement par le titulaire]
11. DOSIMETRIE
Sans objet.
12. INSTRUCTIONS POUR LA PREPARATION DES RADIOPHARMACEUTIQUES
Sans objet.
CONDITIONS DE PRESCRIPTION ET DE DELIVRANCE
Liste II.
*[For when you're not getting the expected output from a requests+BeautifulSoup scrape,] you should make a habit to check that req.status==200 (it was, in this case, but it might not always be), and then save the fetched html with with open('x.html', 'wb') as f: f.write(req.content) - after running, you should open and inspect the "x.html" file; if it does not contain the same html as the page you want to scrape, you should go back to the original page, go to the network tab and see if you can find and replicate the request/s that are being used to fetch the data you want.
I want to create a dataframe after web scraping thousands of similar pages like this: https://questions.assemblee-nationale.fr/q9/9-64745QE.htm.
One of the columns that I want to create is "question" that I obtain from doing
right=soup_data.findAll('td', {'colspan': '2'})
question=right[8].quest.text
However there are a few exceptions (https://questions.assemblee-nationale.fr/q9/9-64743QE.htm) and in those cases the right code is:
right=soup_data.findAll('td', {'colspan': '2'})
question=right[9].quest.text
Is it possible to change my code, so that he handles these exceptions and does not interrupt every time that it finds an exception?
Here is my code:
import pandas as pd
from requests import get
from bs4 import BeautifulSoup as Soup
import numpy as np
question=[]
df = pd.DataFrame(list(zip([question])), columns =['Question'])
urls=["https://questions.assemblee-nationale.fr/q9/9-64741QE.htm",
"https://questions.assemblee-nationale.fr/q9/9-64745QE.htm",
"https://questions.assemblee-nationale.fr/q9/9-64743QE.htm"]
for url in urls:
url=get(url)
requests=url.text
soup_data=Soup(requests, 'html.parser')
right=soup_data.findAll('td', {'colspan':'2'})
question = right[8].quest.text
xf = pd.DataFrame(list(zip([question])), columns =['Question'])
df = pd.concat([df,xf], axis=0)
Selecting things by index is only an idea, if you know that it always exists in your whole process.
You are close to your goal but should change your strategy and select your elements more specific e.g. by element:
soup_data.find('quest').text
Also important check if element exists and handle that behavior:
try/except
try:
question = soup_data.find('quest').text
except:
question = None
if statement
question = s.text if(s := soup_data.find('quest')) else None
Note: In newer code avoid old syntax findAll() instead use find_all() - For more take a minute to check docs
Example
import pandas as pd
import requests
from bs4 import BeautifulSoup as Soup
questions=[]
urls=["https://questions.assemblee-nationale.fr/q9/9-64741QE.htm",
"https://questions.assemblee-nationale.fr/q9/9-64745QE.htm",
"https://questions.assemblee-nationale.fr/q9/9-64743QE.htm"]
for url in urls:
r = requests.get(url)
soup_data=Soup(r.text, 'html.parser')
question = s.text if(s := soup_data.find('quest')) else None
questions.append(question)
pd.DataFrame(questions, columns =['Question'])
or to get more than this single information:
data.append({
'analyse':s.text if(s := soup_data.find('ana')) else None,
'question':s.text if(s := soup_data.find('quest')) else None,
'response':s.text if(s := soup_data.find('rep')) else None
})
Output
analyse
question
response
Fonctionnement. regroupement de policiers de plusieurs communes
M Henri Bayard attire l'attention de M le ministre de l'interieur et de la securite publique sur l'interet qu'il y aurait, en particulier dans les communes rurales, de permettre aux policiers municipaux de se regrouper pour exercer leur mission en dehors du territoire de leur propre commune d'affectation. En effet, certaines missions, par exemple de nuit, necessitent la presence d'au moins deux personnes pour des raisons de securite evidentes, comme cela se passe dans la gendarmerie, et, dans la grande majorite des cas, la commune ne possede qu'un seul policier municipal. Il lui demande si la reflexion a ete menee sur ce sujet et quelles dispositions pourraient etre envisagees.
Reponse. - S'il est souhaitable que les communes puissent recourir a de nombreuses formules de cooperation intercommunale, ce droit ne saurait leur etre accorde sans risques, y compris pour les libertes, dans le domaine de la police, compte tenu de ce que le bon exercice de celle-ci ne s'accommode ni du rapprochement des points de vue lorsqu'une decision urgente est a prendre ni de la dilution des responsabilites. Pour pallier ces risques, l'exigence de concentrer les pouvoirs de police entre les mains d'un responsable unique du groupement intercommunal ne manquerait pas tres rapidement de prevaloir, en fait dans un premier temps, en droit dans un second, ayant pour consequence de retirer aux maires des communes membres du groupement la direction et le controle des agents municipaux places sous leur autorite. C'est pourquoi il n'est pas envisage de mettre en place une institution qui remettrait en cause le principe de specialite territoriale applicable aux communes en matiere de police et qui battrait en breche celui selon lequel le pouvoir de police ne se delegue pas. Certes, en zone rurale, eu egard aux difficultes que rencontrent certaines communes pour s'assurer le concours d'un garde champetre, dont la presence est bien utile, compte tenu de la multiciplite des taches que le maire peut lui confier, ces principes peuvent etre quelque peu assouplis. Et c'est pourquoi l'article R 131-1 du code des communes accorde le droit aux communes d'avoir un meme garde champetre en commun. Mais ce droit, qui vise une situation bien specifique, ne saurait etre modifie en vue de permettre aux communes de creer des groupements d'agents de police municipale.
Federation francaise. fonctionnement. licenciements. cadres techniques
M Jose Rossi attire l'attention de Mme le ministre de la jeunesse et des sports sur la situation des cadres techniques de la federation francaise de canoe-kayak. Ce corps de techniciens cree en 1960 a permis de mettre en place une structure efficace d'un sport qui a obtenu d'excellents resultats aux jeux Olympiques de Barcelone. En outre, le canoe-kayak, en particulier l'ensemble de ses cadres techniques, contribue a la lutte pour la defense de l'environnement, a la creation de nouveaux equipements et de nouvelles structures d'accueil pour les jeunes ; il participe egalement avec les collectivites locales au developpement touristique des zones rurales. Compte tenu de la menace de suppression de quatre-vingt-quatre postes qui pesent sur cette profession, il lui demande quelle politique elle entend mettre en oeuvre pour au contraire eviter le demantelement de cette activite tres importante pour le monde sportif francais.
Reponse. - Le ministere de la jeunesse et des sports comme d'autres departements ministeriels contribue a l'effort budgetaire de reduction des effectifs de la fonction publique. Cependant, il convient de remarquer que la norme de reduction arretee a 1,5 p 100 en 1993 ne s'applique pas a ce departement ministeriel, considere par le Gouvernement comme un secteur prioritaire. En effet, le nombre d'emplois budgetaires a supprimer a ete fixe a quatre-vingt-dix au lieu de cent treize repartis de la maniere suivante : six emplois administratifs, quatre-vingt-quatre emplois de cadres techniques. Par ailleurs, les suppressions d'emplois sont compensees dans la loi de finances, a la fois par la creation de vingt contrats de haut niveau pour les entraineurs des federations non olympiques et par l'inscription d'une mesure budgetaire nouvelle dont l'objectif est de donner aux federations concernees par les retraits d'emplois les moyens financiers de recruter des animateurs sportifs. Ainsi, ce nouveau dispositif qui consiste a transformer pour partie l'aide actuelle en personnels par une aide financiere equivalente preserve les effectifs d'encadrement des federations en leur donnant une plus grande liberte quant au choix des personnels a recruter.
Livre : Suicide mode d'emploi. poursuites judiciaires. perspectives
M Jacques Barrot appelle l'attention de M le garde des sceaux, ministre de la justice, sur les poursuites engagees depuis mars 1990 contre l'editeur du livre « Suicide, mode d'emploi ». Les services de la chancellerie ont precise que l'information suivait son cours au tribunal de grande instance de Paris et que le juge d'instruction envisageait a bref de clore son dossier. Il lui demande en consequence de le fixer sur l'etat de la procedure engagee en 1990.
Reponse. - Les suites judiciaires donnees a l'ouvrage Suicide, mode d'emploi ainsi que l'expose des moyens mis en oeuvre par les services publics pour lutter contre le suicide des jeunes figurent dans les reponses du garde des sceaux, faites a differentes questions ecrites et publiees au Journal officiel de l'Assemblee nationale des 24 fevrier 1992, pages 2357 et 2358, et du Senat, le 24 septembre 1992, page 2196. Depuis lors, l'information suit son cours au tribunal de grande instance de Paris et le juge d'instruction designe, envisage, dans les toutes premieres semaines de l'annee 1993, le reglement de cette procedure. Par ailleurs, en ce qui concerne l'ouvrage intitule Final Exit, le garde des sceaux est en mesure de faire connaitre aux auteurs des questions ecrites que le tribunal correctionnel de Paris, par jugement du 15 decembre 1992, a, sur le fondement des articles 318-1 et 318-2 du code penal resultant de la loi no 87-1133 du 31 decembre 1987 qui incrimine le delit de provocation au suicide, condamne le president-directeur general de la societe Inter-Forum a la peine de 30 000 francs d'amende et a ordonne la confiscation et la destruction des ouvrages saisis.
Might not be the best practice but a quick solution could be:
import pandas as pd
from requests import get
from bs4 import BeautifulSoup as Soup
import numpy as np
question=[]
df = pd.DataFrame(list(zip([question])), columns =['Question'])
urls=["https://questions.assemblee-nationale.fr/q9/9-64741QE.htm",
"https://questions.assemblee-nationale.fr/q9/9-64745QE.htm",
"https://questions.assemblee-nationale.fr/q9/9-64743QE.htm"]
for url in urls:
url=get(url)
requests=url.text
soup_data=Soup(requests, 'html.parser')
try:
right=soup_data.findAll('td', {'colspan':'2'})
question = right[8].quest.text
except AttributeError:
right=soup_data.findAll('td', {'colspan': '2'})
question=right[9].quest.text
xf = pd.DataFrame(list(zip([question])), columns =['Question'])
df = pd.concat([df,xf], axis=0)
<div id="product_description" class="sub-header">
<h2>Product Description</h2>
</div>
<p>Dans une France assez proche de la nôtre, un homme s’engage dans la carrière universitaire. Peu motivé par l’enseignement, il s’attend à une vie ennuyeuse mais calme, protégée des grands drames historiques. Cependant les forces en jeu dans le pays ont fissuré le système politique jusqu’à provoquer son effondrement. Cette implosion sans soubresauts, sans vraie révolution, s Dans une France assez proche de la nôtre, un homme s’engage dans la carrière universitaire. Peu motivé par l’enseignement, il s’attend à une vie ennuyeuse mais calme, protégée des grands drames historiques. Cependant les forces en jeu dans le pays ont fissuré le système politique jusqu’à provoquer son effondrement. Cette implosion sans soubresauts, sans vraie révolution, se développe comme un mauvais rêve.Le talent de l’auteur, sa force visionnaire nous entraînent sur un terrain ambigu et glissant ; son regard sur notre civilisation vieillissante fait coexister dans ce roman les intuitions poétiques, les effets comiques, une mélancolie fataliste.Ce livre est une saisissante fable politique et morale. ...more</p>
<div class="sub-header">
I want to scrape the text chunk. Could you please tell me what is happening there? My attempt is here.
url = 'https://books.toscrape.com/catalogue/soumission_998/index.html'
response = requests.get(url)
text = response.text
pattern = re.compile(r'<h2>Product Description</h2>\s*</div>\s*<p>(.+?)</p>', re.M | re.S)
brief_dscrp = pattern.findall(text)
brief_dscrp
Result is:
['Dans une France assez proche de la nôtre, un homme sâ\x80\x99engage dans la carrière universitaire. Peu motivé par lâ\x80\x99enseignement, il sâ\x80\x99attend Ã\xa0 une vie ennuyeuse mais calme, protégée des grands drames historiques. Cependant les forces en jeu dans le pays ont fissuré le système politique jusquâ\x80\x99Ã\xa0 provoquer son effondrement. Cette implosion sans soubresauts, sans vraie révolution, s Dans une France assez proche de la nôtre, un homme sâ\x80\x99engage dans la carrière universitaire. Peu motivé par lâ\x80\x99enseignement, il sâ\x80\x99attend Ã\xa0 une vie ennuyeuse mais calme, protégée des grands drames historiques. Cependant les forces en jeu dans le pays ont fissuré le système politique jusquâ\x80\x99Ã\xa0 provoquer son effondrement. Cette implosion sans soubresauts, sans vraie révolution, se développe comme un mauvais rêve.Le talent de lâ\x80\x99auteur, sa force visionnaire nous entraînent sur un terrain ambigu et glissant ; son regard sur notre civilisation vieillissante fait coexister dans ce roman les intuitions poétiques, les effets comiques, une mélancolie fataliste.Ce livre est une saisissante fable politique et morale. ...more']
You should be using a scraping library such as BeautifulSoup instead of regexps. It will deal with this sort of Unicode nonsense in a more graceful way.
Either way, what you're seeing here is that when you do response.text, requests will attempt to guess the encoding of the page based on the response headers. For some reason, requests has decided the response is ISO-8859-1 for no good reason. (If no encoding had been explicitly specified, it would use the chardet library.)
You can either force Requests to use chardet:
response.encoding = None
text = response.text
or force the known correct encoding,
response.encoding = "utf-8"
text = response.text
or just do the decoding from binary content yourself:
text = response.content.decode("utf-8")
Et voilà:
['Dans une France assez proche de la nôtre, un homme s’engage dans la carrière universitaire. Peu motivé par l’enseignement, ...
I want to send variables into find_all(), this is my code:
import requests
from bs4 import BeautifulSoup
url = 'https://www.elheraldo.co'
page = requests.get(url)
soup = BeautifulSoup(page.content, 'html.parser')
new = soup.find_all(class_=['titulo'])
In the example above I'm using a two constants, the url and class_=['titulo'] but I want to automate this considering this data:
newspapers = {'https://www.elheraldo.co': "class_=['titulo']",
'https://www.zonacero.com': "'div', class_=['title']",
'https://www.elpilon.com.co': "class_=['land-see-post-title']",
'https://www.eluniversal.com.co': "'div', class_=['headline']",
'https://www.diariodelcesar.com': "'h2', class_=['title']",
'https://www.hoydiariodelmagdalena.com.co': "'h2', class_=['title']",
'https://www.diariodelnorte.net': "'h3', itemprop=['name']"}
I suggest to having the values of the dictionary as CSS selectors which you can put into soup.select() method.
For example:
import requests
from bs4 import BeautifulSoup
newspapers = {'https://www.elheraldo.co': ".titulo",
'https://www.zonacero.com': "div.title",
'https://www.elpilon.com.co': ".land-see-post-title",
'https://www.eluniversal.com.co': "div.headline",
'https://www.diariodelcesar.com': "h2.title",
'https://www.hoydiariodelmagdalena.com.co': "h2.title",
'https://www.diariodelnorte.net': 'h3[itemprop="name"]'}
for url, css_selector in newspapers.items():
soup = BeautifulSoup(requests.get(url).content, 'html.parser')
print(url, css_selector)
for i, t in enumerate(soup.select(css_selector), 1):
print(i, t.get_text(strip=True))
print('-' * 80)
Prints:
https://www.elheraldo.co .titulo
1 En Barranquilla, toma de muestras se ha cuadruplicado
2 En octubre arrancan obras del viejo muelle de Puerto Colombia
3 “Saab conoce los contactos criminales de Maduro en el mundo”: exfiscal
4 Histórica: así será la primera instalación virtual del Congreso
5 El Editorial | Aumentar las pruebas
6 “Necesitan abrazos de paisanos”: alcalde de Tasajera sobre las víctimas
7 Gobernador del Cesar tiene cinco investigaciones activas
8 Por lío de invasión, obras de clínica en Barranquilla están paralizadas
9 El Rodadero será piloto para reapertura de playas samarias
10 EPS en Bolívar prometen aumentar número de pruebas COVID-19
11 Bebé prematura supera COVID-19 en Valledupar
12 Minsalud anuncia bloqueos epidemiológicos en Montería y Sincelejo
13 6 mil mujeres cabeza de hogar se formarán para tener autonomía económica
14 En video | Declaran calamidad pública en El Laguito por emergencia ambiental
15 Reportan estafa a través de cadena de WhatsApp
16 Jorge Enrique Vélez, con las horas contadas en la presidencia de Dimayor
17 Tres bajas tendrá el ‘Vuelo del Deporte’
18 Declaran improcedente la tutela de la FCF contra fallo de la SIC
19 Egan Bernal promete que luchará para ganar su segundo Tour de Francia
20 “No tenemos ninguna propuesta concreta por Rangel”: Antonio Char
21 Increíble: ya venden el modelo pirata de la nueva camiseta de Junior
22 Esta es la nueva camiseta de Junior
23 ChocQuibTown y Dalex le cantan a los amores tóxicos en nuevo tema
24 Diversión y romance en ‘Querida’, lo nuevo de Piso 21 y Feid
25 Vaech debuta como solista con ‘Mal de amor’
26 Tini y Khea lanzan ‘Ella dice’
27 Rutinas de ejercicios para niños y adultos mayores
28 'Puede', el nuevo comienzo de Ruggero
29 La Covid-19 acabó con la vida del cantautor Víctor Víctor
30 La sesión ha sido cerrada con exíto
31 Por favor, complete su información de registroaquí
32 DETECTAMOS QUE TIENES UN BLOQUEADOR DE ANUNCIOS ACTIVADO
--------------------------------------------------------------------------------
https://www.zonacero.com div.title
1 No existen fronteras: Tecnoglass y su equipo voluntario llegaron con 1.000 mercados a Tasajera
2 Con el reporte de este viernes de Minsalud, Soledad llegó a los 516 muertos por Covid-19
3 ¿Quién le pone la lupa a los cuestionables contratos de la Contraloría y la Fiscalía en medio del coronavirus?
4 Declaran improcedente tutela de Federación de Fútbol contra Mincomercio y SIC
... and so on.
This can be automated like this:
import requests
from bs4 import BeautifulSoup
newspapers = {
'https://www.elheraldo.co': "class_=['titulo']",
'https://www.zonacero.com': "'div', class_=['title']",
'https://www.elpilon.com.co': "class_=['land-see-post-title']",
'https://www.eluniversal.com.co': "'div', class_=['headline']",
'https://www.diariodelcesar.com': "'h2', class_=['title']",
'https://www.hoydiariodelmagdalena.com.co': "'h2', class_=['title']",
'https://www.diariodelnorte.net': "'h3', itemprop=['name']"
}
for url,clas in newspapers.items():
page = requests.get(url)
soup = BeautifulSoup(page.content, 'html.parser')
new = soup.find_all(clas)
I am working with spacy and I would like to generate the noun_chunks of a french text:
import spacy
nlp = spacy.load('fr_core_news_sm')
text4='''Depuis quelques décennies, afin d'alléger le travail des agents de conduite et de télécommander la fonction de freinage d'immobilisation, on a généralisé l'utilisation des freins à ressort qui ont remplacé les freins à main même dans les applications ferroviaires. Ces freins à ressort paraissent de plus assurer une fonction de sécurité car ils sont généralement desserrés par une pression d'air comprimé qu'il suffit de laisser s'échapper de façon graduée pour déclencher le frein de secours modérable, le frein d'immobilisation étant obtenu par un échappement total de la pression d'air comprimé que l'on est pratiquement sûr d'obtenir. En matière ferroviaire, on a même réalisé des freins de service modérables commandés directement par des ressorts avec échappement de la pression d'air comprimé en fonction de l'effort de freinage souhaité pour le véhicule et de la charge de celui-ci, de manière à obtenir la décélération souhaitée quelle que soit la charge du véhicule, le freinage de parc ou d'immobilisation étant obtenu automatiquement par surcroît en cas d'échappement total de la pression d'air comprimé.'''
doc = nlp(text4)
for chunk in doc.noun_chunks:
print(chunk.text)
The results are very strange:
le travail
des agents de conduite et de télécommander la fonction de freinage d'immobilisation
on
l'utilisation des freins à ressort qui ont remplacé les freins à main même dans les applications ferroviaires
Ces freins à ressort
une fonction de sécurité
ils
d'air
il
...etc...
The question is a mix code/linguistic
In the above list some noun_chunks are very long and actually should have been further divided.
Why is that not the case?
Is there any implication of using __ fr_core_news_sm __ model (14MB) instead as a larger one?
Does the model influences the quality of the nounchunks separation?
The noun chunks depend on the POS tags and the dependency parses, which usually do improve slightly for the larger models, especially between sm and md. It's also possible that the noun_chunks iterator for French needs some improvement.