我已經能夠毫無問題地抓取其他資料,我也可以使用下面的代碼抓取 url 鏈接。
response2 = requests.get(url2)
soup = BeautifulSoup(response2.text, 'lxml')
for link in soup.find_all('a', href=True):
print(link['href'])
然而,我現在面臨兩個挑戰:
1-我只對每行突出顯示的 URL 感興趣(事件鏈接)
2-我如何使用這些鏈接依次從每個頁面抓取資料(就像我為每個鏈接設定一個新代碼替換 urlfix 的 url 一樣)
urlfix = 'https://www.rootsandrain.com/organiser21/uci/events/filters/dh/'
responsefix = requests.get(urlfix)
dffix = pd.read_html(responsefix.text)[0]
#remove times and other data
dffix.drop('Time', axis=1, inplace=True)
dffix.drop('Time.1', axis=1, inplace=True)
dffix.drop('Competitors', axis=1, inplace=True)
#rename columns
dffix.rename(columns = {dffix.columns[3] : 'Win_M'}, inplace = True)
dffix.rename(columns = {dffix.columns[4] : 'Win_F'}, inplace = True)
#filter for event
dffix['Worldchamps']=dffix['Event'].str.contains(r'World Championships', na=True)
dffix['Worldcup']=dffix['Event'].str.contains(r'World Cup', na=True)
#this line for do no contain , | for two
dffix['Miscrace']=~dffix['Event'].str.contains(r'World Championships|World Cup', na=True)
with pd.option_context('display.max_rows', None, 'display.max_columns', None): # more options can be specified also
print(dffix)
網頁截圖
uj5u.com熱心網友回復:
注意: 對于未來的問題 - 每個問題應該只有一個問題以保持焦點 - 每個人都注定要問一個新問題。
只是為了指出一個方向,選擇更具體的元素,并注意你必須href與 baseUrl 連接。
以下list comprehension將創建一個 url 串列,您可以使用它來迭代和獲取詳細資訊表 - 用于使用 idcss selectors選擇表中的每一行,并使用 baseUrl 連接每一行的第一行:tbodyT1href<a>
['https://www.rootsandrain.com' row.a['href'] for row in soup.select('#T1 tbody tr')]
請記住,還有一個分頁,有沒有結果的詳細頁面,... - 如果您卡在那里提出一個新問題,請同時提供預期的輸出。謝謝
例子
url = 'https://www.rootsandrain.com/organiser21/uci/events/filters/dh/'
response = requests.get(url)
soup = BeautifulSoup(response.content)
urlList = ['https://www.rootsandrain.com' row.a['href'] for row in soup.select('#T1 tbody tr')]
data = []
for url in urlList:
try:
data.append(pd.read_html(url)[0])
except:
print(f'No tables found:{url}')
pd.concat(data)
輸出
...
No tables found:https://www.rootsandrain.com/event9599/2022-jul-9-mercedes-benz-uci-world-cup-dh-4-lenzerheide/
No tables found:https://www.rootsandrain.com/event9598/2022-jun-11-mercedes-benz-uci-world-cup-dh-3-leogang/
No tables found:https://www.rootsandrain.com/event9597/2022-may-22-mercedes-benz-uci-world-cup-dh-2-fort-william/
...
| 未命名:0 | 位置? | 圍兜 | 姓名 | 未命名:4 | 執照 | 年 | 贊助商 | 公里/小時 | 扇區1 | 扇區2 | 扇區3 | 扇區4 | 扇區5 = | 預選賽 | 公里/小時.1 | 扇區1 .1 | 扇區2 .1 | 扇區3 .1 | 扇區4 .1 | 扇區5 =.1 | 運行 1 | 差異 | 扇區3 = | 扇區3 =.1 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 楠 | 第一 | 3 | 洛伊克·布魯尼 | 楠 | 1.00075e 10 | 1994 | 專業重力 | 57.781 | 28.973s1 | 1:08.4101 | 40.922s1 | 31.328s6 | 24.900s11 | 3:14.5331 | 59.062 | 28.697s1 | 1:08.8755 | 40.703s1 | 31.067s16 | 24.037s3 | 3:13.3791 | - | 楠 | 楠 |
| 楠 | 第二 | 7 | 特洛伊·布魯斯南 | 楠 | 1.00073e 10 | 1993 | 峽谷集體工廠團隊 | 56.258 | 29.331s8 | 1:09.1763 | 42.676s6 | 30.488s2 | 24.493s2 | 3:16.1643 | 59.023 | 29.008s5 | 1:09.40313 | 41.363s8 | 30.121s2 | 23.905s2 | 3:13.8002 | 0.421s | 楠 | 楠 |
| 楠 | 第三 | 16 | 安赫爾·蘇亞雷斯·阿隆索 | 楠 | 1.00088e 10 | 1995 | 商業 21 | 54.1939 | 30.077s26 | 1:18.27071 | 1:16.68773 | 2:00.79772 | 26.728s67 | 5:32.55972 | 58.067 | 28.991s4 | 1:09.2669 | 41.973s16 | 29.531s1 | 24.249s7 | 3:14.0103 | 0.631s | 楠 | 楠 |
uj5u.com熱心網友回復:
要獲取事件鏈接,請僅使用 CSS 選擇器.future td:nth-child(2) a
for link in soup.select('.future td:nth-child(2) a'):
print(link['href'], link.text)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/454897.html
上一篇:是否可以將apache2配置為接受附加在url末尾的查詢字串,并用`/`字符分隔?
下一篇:TypeORM的型別不匹配
