簡體   English   中英

Python-美麗的湯-獲取鏈接find_all

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM