提问人:babytroopr 提问时间:11/17/2023 最后编辑:badukerbabytroopr 更新时间:11/18/2023 访问量:47
使用 python 进行网页抓取的初学者:使用 BeautifulSoup 并通过类查找时,我要么得到错误的类,要么结果为“无”
Beginner in web scraping with python: When using BeautifulSoup and finding via class I either get the wrong class or the result "None"
问:
我想从以下网站获取UCI积分:https://www.procyclingstats.com/rider/tadej-pogacar
首先,我只想从最新一场比赛中抢到uci积分。
到目前为止,我的代码是:
import requests
from bs4 import BeautifulSoup
import pandas as pd
page = requests.get("https://www.procyclingstats.com/rider/tadej-pogacar")
soup = BeautifulSoup(page.text, "lxml")
result_date = soup.find("td", class_ = False, id = False, style = False).text
print(result_date)
uci = soup.find("td", class_ = "cu600 ")
print(uci)
当我运行代码时,我要么得到类“gc cu600”,要么得到“无”,这取决于我是否搜索“cu600”或“cu600”。
有人知道我做错了什么吗?
答:
0赞
baduker
11/18/2023
#1
以下是获取UCI Points
import requests
import pandas as pd
url = "https://www.procyclingstats.com/rider/tadej-pogacar"
df = pd.concat(pd.read_html(requests.get(url).text, flavor="lxml"))
print(df["Points UCI"].dropna().to_string(index=False))
要从最新一场比赛中获得积分,只需将最后一行更改为:
print(df["Points UCI"].iloc[0])
输出(所有点):
800
85
150
125
60
3
600
1040
210
150
150
110
20
15
30
210
40
110
110
100
50
400
500
800
260
440
500
60
60 +10
+10
60 +10
2.86
200
20 +5
+5
20 +5
20 +5
125
评论
1赞
babytroopr
11/18/2023
谢谢。我将研究使用这种方法。我只是假设您必须使用 BeautifulSoup 进行网络抓取,因为这是我在多门课程中看到的:D但我很高兴有其他方法可以解决这个问题,所以谢谢!对于链接中的表格,这种方法是否更好?
评论
"cu600"
"cu600 "
"cu600 "
"cu600"
<td class="gc cu600">
gc
cu600