我想从下面的网站抓取网页:https://www.assemblee-nationale.fr/12/cri/2003-2004/20040001.asp#TopOfPage。
下面是一个HTML示例:
<html>
<body>
<div align="center">
<p align="JUSTIFY">
<strong></strong>
<strong> M. le président </strong>
Conformément...
<br>
Mes chers...
<strong> M. Maxime </strong>
Nous aussi!
<br>
<strong></strong>
</p>
<p align="JUSTIFY">
<strong></strong>
<strong> M. le président </strong>
En ouvrant...
<br>
Je vous...
<i>
(Mmes et MM...)
<br>
<strong></strong>
</i>
</p>
</div>
</body>
</html>
我想把网站转换成一个数据框架,每个演讲者在一个列(强),演讲在另一个列。
下面是我的代码:
import requests
from bs4 import BeautifulSoup
import pandas as pd
debate=[]
df=pd.DataFrame()
url = "https://www.assemblee-nationale.fr/12/cri/2003-2004/20040001.asp"
r=requests.get(url)
soup_data=BeautifulSoup(r.content, 'html.parser')
list_soup_div=soup_data.find_all('div', {'align':'center'})
for item_soup_div in list_soup_div:
for item_soup_p in item_soup_div.find_all('p', {'align':'JUSTIFY'}):
for br_tag in item_soup_p.find_all('br'):
text_speech=br_tag.previous.strip()
text_speaker=br_tag.find_previous('strong').get_text(strip=True)
debate.append({'speaker': text_speaker, 'speech': text_speech})
df=pd.DataFrame(debate)
我获得的:
speaker speech
M. le président Conformément
M. le président Mes chers...
M. Maxime Nous aussi!
M. le président En ouvrant...
M. le président (Mmmes et MM...)
我想要的:
speaker speech
M. le président Conformément
M. le président Mes chers...
M. Maxime Nous aussi!
M. le président En ouvrant...
M. le président Je vous... (Mmmes et MM...)
当我有一个<i>
时,在<br
〉之前没有,这就是为什么我在示例中得到一个缺失的speach。
我应该如何改进我的代码?
1条答案
按热度按时间rsaldnfx1#
编辑
感谢您的评论,所以让我们尝试其他方式和
decompose()
都空<strong>
然后迭代每个
<strong>
next_siblings
,如果其中一个是<strong>
则中断:示例
输出
| | 扬声器|言语|
| - -|- -|- -|
| 第0页|总统先生。|降神会在12点结束。|
| 一个|总统先生。|根据宪法第28条的规定,我决定召开2003- 2004年的普通会议。我的同事们,允许我在你们之前告诉你们,我很快就会回来的。|
| 2个|马克西姆·格雷梅茨先生。|我们也是!|
| 三个|总统先生。|在本次会议上,我想解释我们大家都在面对的这部影片,这是一个家庭的故事。因此,我要求你们默哀一分钟。|
| 四个|总统先生。|根据《条例》第10条,在常会开始时,主席由六名以上年轻议员协助,他们履行秘书的职能。爱德华·库蒂亚尔先生、娜塔丽·科斯丘斯科-莫里泽夫人、文森特·罗兰先生、塞巴斯蒂安·休伊赫、马夏尔·萨迪耶、洛朗·埃纳特。|
| 五个|总统先生。|今天的命令要求提名国民议会六名副总统、三名议长和两名秘书。关于这些不同的职能,各集团的主席列出了一份候选人名单。我不需要任何其他候选人。弗朗索瓦·巴罗安先生、让·勒加雷克先生、马克-菲利普·多布雷斯先生、鲁迪·萨莱斯先生、埃莱娜·米尼翁女士、埃里克·拉乌尔先生;询问者:亨利·库克先生,克劳德·盖拉尔,迪迪埃·米戈;秘书:雅克·布吕纳先生、弗朗索瓦-米歇尔·贡诺先生、让-皮埃尔·库谢达先生、阿兰·穆内-布雷桑先生、热敏尔·佩罗先生、玛丽-弗朗索瓦·佩罗尔-杜蒙女士、贝尔纳·佩鲁先生、让·普罗里奥尔先生、迪迪埃·昆廷先生、弗朗索瓦·罗什布洛因先生、弗雷德里克·德·圣塞尔南先生、让·于贝尔施拉格先生。|
| 六个|总统先生。|我认为国民议会主席团已经组成。主席团的组成已通知共和国总统先生、总理先生和议会主席先生,并在《官方日报》上发表。主席团将于10月8日,即9月9日举行会议。|
| 七个|总统先生。|我注意到,六个常设委员会于今年12月中旬召开会议,选举主席团成员,我还注意到,我将于12月18日再次召开主席会议。|
| 八个|总统先生。|总理先生在2003年9月2日、12日和15日的信中通知我,临时代表团分别由卢瓦尔省代表让-弗朗索瓦·乔西先生、上莱茵省代表吉尔伯特·迈耶先生、洛特-加龙省代表米歇尔·迪芬巴赫先生和伊夫林省代表克莉丝汀·布廷女士组成,2003年9月15日为上述两个会议举行。|
| 九个|总统先生。|我收到总理先生的一封信,通知我关于卡尔瓦多斯代表布里Git·勒布雷东女士根据《选举法》第144条的规定担任临时特派团的决定,这一决定的目的是在2003年7月30日的《官方公报》上发表一项决定。总理写信通知我,根据农业、粮食和农业部长先生根据《选举法》第144条的规定,由临时特派团菲尼特代表克里斯蒂安·梅纳德先生作出的决定,这一决定的目的是在2003年7月31日的《官方公报》上发表一项决定。根据选举法第144条的规定,临时特派团上莱茵省代表弗朗西斯Hillmeyer先生根据装备、运输、后勤部长先生的指示作出决定,这一决定是2003年8月28日正式发表在《官方日报》上的。皮埃尔·朗,摩泽尔代表,临时代表团成员,根据《选举法》第144条的规定,这一决定是2003年9月19日《官方公报》发表的一项决定的目标。Pierre Morel-A-L 'Huissier,代表Lozère,临时代表团成员,根据《选举法》第144条的规定,根据国家前战斗人员事务秘书长的意见,作出这一决定,目的是在2003年9月24日的《正式公报》上正式发表。|
...
认为它接近于您的一个仍在回答的封闭式问题-更具体地选择您的元素,并检查
<i>
是否可用: