我是Python(3)和Beautifulsoup(4)的新手,试图学习网络抓取。
我正在抓捕瑞典议会议员名单。输出中几乎所有名称旁边都带有(S)(社会民主党成员)。前四个名称缺少(S)。
是否有某种方法可以将此名称添加到没有它的每个名称中,也许 条件语句? “如果列表项不包含“(S)”,则将其附加 在该列表项的末尾。”
此外,是否有可能像底部的名字一样格式化名字?
代码:
helper_df = df.dropna()
df = df.fillna(numpy.random.normal(loc=helper_df.mean(), scale=numpy.std(helper_df)))
输出为:
source = urllib.request.urlopen("https://www.riksdagen.se/sv/ledamoter-
partier/socialdemokraterna/").read()
soup = bs.BeautifulSoup(source, "lxml")
namn = soup.find_all("span", {"class": "fellow-name"})
for span in soup.find_all("span", {"class": "fellow-name"}):
resultat = (span.text.strip())
print(resultat)
答案 0 :(得分:3)
有一种方法:str.endswith
。
resultat = span.text.strip()
if not resultat.endswith(' (S)'):
resultat += ' (S)'
(我在第一行中删除了圆括号;没有必要。)
要在名字的末尾添加逗号,请将文本分隔在空格上,然后再将其与第一项放在最后:
if not ',' in resultat:
temp_list = resultat.split()
resultat = ' '.join(temp_list[1:])+', '+temp_list[0]
结果:
Löfven, Stefan (S)
Ygeman, Anders (S)
Karlsson, Annelie (S)
Rådström Baastad, Lena (S)
Ahlberg, Ann-Christin (S)
Andersson, Johan (S)
Axelsson, Marie (S)