首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提取存储在dataframe - Python列表中的URL的一部分

提取存储在dataframe - Python列表中的URL的一部分
EN

Stack Overflow用户
提问于 2021-11-27 08:49:30
回答 1查看 41关注 0票数 1

在下面的示例25709中,我只尝试提取数字部分,并将其添加到一个变量,让我们称其为athleteID,稍后我可以将其添加到动态URL中,以迭代并发送搜索请求:

代码语言:javascript
复制
'<a href="../athletehistory/?athleteNumber=25709" target="_top">Zola Budd</a>'

我将这些URL(或部分URL)的列表存储在dataframe中的列表中,并且我使用split('=')函数对此数据帧进行了两次迭代,并设法使其达到下面的点。

代码语言:javascript
复制
 i=[]
 id_list=[]
 for id in df2['athleteURL']:
     i = id.split('\=')
     id_list.append(i)
 print(id_list)

然后生成一个列表,其中一行如下所示:

代码语言:javascript
复制
 '<a href', '"../athletehistory/?athleteNumber', '25709" target', '"_top">Zola Budd</a>'

然后,我使用'('"')‘进行了第二次迭代,并得到了下面的结果:

代码语言:javascript
复制
 id_list2=[]


 for id2 in id_list[2]:
     j = id2.split('\"')
     id_list2.append(j)

 #print(id_list2[2])

 athleteIDnumber = id_list2[2]
 print(athleteIDnumber)

 ['2967288', ' target']

然而,这就是我现在遇到的问题,因为它似乎是列表中的一个元素,而且我不确定这是不是最有效的提取该行的方法,因为我还在努力使用其他regex函数。

任何建议或支持都将不胜感激。谢谢,克里斯

EN

回答 1

Stack Overflow用户

发布于 2021-11-27 09:04:07

代码语言:javascript
复制
from urllib.parse import urlparse, parse_qs
from bs4 import BeautifulSoup

spam = '<a href="../athletehistory/?athleteNumber=25709" target="_top">Zola Budd</a>'

def get_athlete_number(html):
    soup = BeautifulSoup(html, 'html.parser')
    href = soup.find('a').get('href')
    return parse_qs(urlparse(href).query).get('athleteNumber', [None])[0]

print(get_athlete_number(spam))

输出

代码语言:javascript
复制
25709

使用bs4解析html并获取url。使用标准库中的urllib.parse解析url。定义一个函数并将其应用于具有html值的列。请注意,该函数返回str

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70133303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档