我试图从https://www.ourcommons.ca/Parliamentarians/en/members?view=List中提取个人列表。一旦我有名单,我通过每个成员的链接,并试图找到他们的电子邮件地址
一些成员没有电子邮件,因此代码失败。我尝试添加匹配结果为“无”的代码,在这种情况下得到了重复的结果
我使用以下逻辑来匹配
mat = re.search(r'mailto:\w*\.\w*@parl.gc.ca',ln1.get('href'))
if mat:
email.append(mat.group())
else:
email.append("No Email Found")
如果条件是问题所在。当我使用else时,它会给每行一次“找不到电子邮件”
weblinks=[]
email=[]
page = requests.get('https://www.ourcommons.ca/Parliamentarians/en/members?view=ListAll')
soup = BeautifulSoup(page.content, 'lxml')
for ln in soup.select(".personName > a"):
weblinks.append("https://www.ourcommons.ca" + ln.get('href'))
if(len(weblinks)==10):
break
for elnk in weblinks:
pagedet = requests.get(elnk)
soupdet = BeautifulSoup(pagedet.content, 'lxml')
for ln1 in soupdet.select(".caucus > a"):
mat = re.search(r'mailto:\w*\.\w*@parl.gc.ca',ln1.get('href'))
if mat:
email.append(mat.group())
else:
email.append("No Email Found")
print("Len Email:",len(email))
预期结果:显示电子邮件的网页有一个和空白的网页没有
如果检查页面
DOM
有two similar elements present
,这就是为什么您会得到多个值。您需要设置条件来消除这些值。请尝试下面的代码输出:
相关问题 更多 >
编程相关推荐