我正在嘗試使用鏈接串列中每個鏈接中的特定作業來提取鏈接。下面是我獲取 URL 的代碼:
import urllib
from bs4 import BeautifulSoup as bs
url ='https://fbref.com/en/squads/b8fd03ef/Manchester-City-Stats'
html_page = urllib.request.urlopen(url)
soup = bs(html_page, "html.parser")
links = []
player_link =[]
for link in soup.findAll('a'):
links.append(link.get('href'))
從上面的代碼行中,我可以將鏈接串列存盤在 要創建一個僅包含特定單詞的新串列的變數links中summary。應存盤在新串列player_list中的預期輸出(僅部分輸出)如下所示:
player_list =['/en/players/3bb7b8b4/matchlogs/2021-2022/summary/Ederson-Match-Logs',
'/en/players/3eb22ec9/matchlogs/2021-2022/summary/Bernardo-Silva-Match-Logs',
'/en/players/bd6351cd/matchlogs/2021-2022/summary/Joao-Cancelo-Match-Logs',
'/en/players/31c69ef1/matchlogs/2021-2022/summary/Ruben-Dias-Match-Logs',
'/en/players/6434f10d/matchlogs/2021-2022/summary/Rodri-Match-Logs',
'/en/players/119b9a8e/matchlogs/2021-2022/summary/Aymeric-Laporte-Match-Logs']
我嘗試探索一些以前的帖子,但沒有成功。有人可以建議我嗎?
謝謝,
澤普
uj5u.com熱心網友回復:
您可以檢查一個條件(鏈接是否為非空且包含summary在其中):
out = [x for x in links if x and 'summary' in x]
輸出:
['/en/players/3bb7b8b4/matchlogs/2021-2022/summary/Ederson-Match-Logs',
'/en/players/3eb22ec9/matchlogs/2021-2022/summary/Bernardo-Silva-Match-Logs',
'/en/players/bd6351cd/matchlogs/2021-2022/summary/Joao-Cancelo-Match-Logs',
'/en/players/31c69ef1/matchlogs/2021-2022/summary/Ruben-Dias-Match-Logs',
'/en/players/6434f10d/matchlogs/2021-2022/summary/Rodri-Match-Logs',
...
'/en/players/02aed921/matchlogs/2021-2022/summary/Cieran-Slicker-Match-Logs',
'/en/players/c19a2df1/matchlogs/2021-2022/summary/Josh-Wilson-Esbrand-Match-Logs']
uj5u.com熱心網友回復:
最后過濾串列的另一種方法是選擇更具體的目標并從頭開始過濾 - 以下list comprehension僅選擇<a>其中的摘要并將其與您的 baseUrl 連接:
['https://fbref.com' e['href'] for e in soup.select('a[href*="summary"]')]
例子
import urllib
from bs4 import BeautifulSoup as bs
url ='https://fbref.com/en/squads/b8fd03ef/Manchester-City-Stats'
html_page = urllib.request.urlopen(url)
soup = bs(html_page, "html.parser")
summaryUrls = ['https://fbref.com' e['href'] for e in soup.select('a[href*="summary"]')]
print(summaryUrls)
輸出
['https://fbref.com/en/players/3bb7b8b4/matchlogs/2021-2022/summary/Ederson-Match-Logs',
'https://fbref.com/en/players/3eb22ec9/matchlogs/2021-2022/summary/Bernardo-Silva-Match-Logs',
'https://fbref.com/en/players/bd6351cd/matchlogs/2021-2022/summary/Joao-Cancelo-Match-Logs',
'https://fbref.com/en/players/31c69ef1/matchlogs/2021-2022/summary/Ruben-Dias-Match-Logs',
'https://fbref.com/en/players/6434f10d/matchlogs/2021-2022/summary/Rodri-Match-Logs',
'https://fbref.com/en/players/119b9a8e/matchlogs/2021-2022/summary/Aymeric-Laporte-Match-Logs',
'https://fbref.com/en/players/ed1e53f3/matchlogs/2021-2022/summary/Phil-Foden-Match-Logs',
'https://fbref.com/en/players/86dd77d1/matchlogs/2021-2022/summary/Kyle-Walker-Match-Logs',
'https://fbref.com/en/players/b400bde0/matchlogs/2021-2022/summary/Raheem-Sterling-Match-Logs',
'https://fbref.com/en/players/e46012d4/matchlogs/2021-2022/summary/Kevin-De-Bruyne-Match-Logs',
'https://fbref.com/en/players/b0b4fd3e/matchlogs/2021-2022/summary/Jack-Grealish-Match-Logs',
'https://fbref.com/en/players/819b3158/matchlogs/2021-2022/summary/Ilkay-Gundogan-Match-Logs',
'https://fbref.com/en/players/b66315ae/matchlogs/2021-2022/summary/Gabriel-Jesus-Match-Logs',
'https://fbref.com/en/players/892d5bb1/matchlogs/2021-2022/summary/Riyad-Mahrez-Match-Logs',
'https://fbref.com/en/players/5eecec3d/matchlogs/2021-2022/summary/John-Stones-Match-Logs',...]
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/452135.html
標籤:python-3.x 列表 过滤
