[英]Python - Beautiful Soup - Getting a link find_all
我正在嘗試使用beautifulsoup抓取一個網站,我的問題是我只想在HTML源代碼中獲得一個鏈接,但最終卻得到了一個可怕的列表
<div class="table-list-cell py-3 pl-3 v-align-middle member-avatar-cell css-truncate pr-0">
<a href="/Member1">
<img alt="@Member1" class="avatar float-left" height="48" src="https://avatars0.githubusercontent.com/u/xxxxxxx" width="48" />
</a>
我只想獲取/ Member1或@ Member1我的代碼如下所示:
Membres={}
response = requests.get('https://github.com/orgs/xxxxxxxx/people?page=1')
soup = BeautifulSoup(response.content, "html.parser")
for e in soup.find_all("div",{"class":"table-list-cell py-3 pl-3 v-align-middle member-avatar-cell css-truncate pr-0"}):
for d in e.find_all("a"):
for f in d.find_all("img alt="):
Membres[f]={}
因此,我嘗試將“ for in ....”中的行剪掉,並創建一個直接鏈接,例如:
for d in e.find_all("a", href=True):
如果有人獲得了Member1名稱,仍然可以在我的鍵中獲取許多信息。
謝謝
您可以嘗試使用簡單的列表href
從<a>
標記中提取href
:
for e in soup.find_all("div",{"class":"table-list-cell py-3 pl-3 v-align-middle member-avatar-cell css-truncate pr-0"}):
my_list = [a['href'] for a in e.find_all('a')]
這使:
>>> my_list
['/Member1']
要將它們放入字典中,可以使用類似的語法:
for e in soup.find_all("div",{"class":"table-list-cell py-3 pl-3 v-align-middle member-avatar-cell css-truncate pr-0"}):
my_dict = {a['href']:'' for a in e.find_all('a')}
這使:
>>> my_dict
{'/Member1': ''}
您可以使用正則表達式:
import re
s = """
<div class="table-list-cell py-3 pl-3 v-align-middle member-avatar-cell css-truncate pr-0">
<a href="/Member1">
<img alt="@Member1" class="avatar float-left" height="48" src="https://avatars0.githubusercontent.com/u/xxxxxxx" width="48" />
</a>
"""
user_data = dict(re.findall('<img alt="@(.*?)" class="avatar float-left" height="48" src="(.*?)" width="48" />', s))
輸出:
{'Member1': 'https://avatars0.githubusercontent.com/u/xxxxxxx'}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.