gpt4 book ai didi

python - 如何用 BeautifulSoup [Python] 抓取表格

转载 作者:行者123 更新时间:2023-12-05 07:04:22 26 4
gpt4 key购买 nike

社区,

我想处理网络抓取只是为了我自己的兴趣。这个话题非常令人兴奋,您当然可以通过网络上的数据获得很多有趣的见解。

在我的第一个项目中,我想生成一些足球数据。例如,您可以在 Transfermarkt Leroy Sane 上找到有关以前受伤的信息。 .

目标:抓取整个表格。

当前状态:我设法读完了伤病专栏。不幸的是,我还从“错过的比赛”列中获取数据。

问题:有没有更好的方法从每一列中获取确切的值?还是有更好的方法来抓取整个表格?

代码:

import requests
import csv
import re
from bs4 import BeautifulSoup

url = "https://www.transfermarkt.de/havard-nordtveit/verletzungen/spieler/192565"
heads = {'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'}
response = requests.get(url, headers=heads)
html_icerigi = response.text
soup = BeautifulSoup(html_icerigi, "html.parser")
injuries = soup.find_all(class_="hauptlink")
injuries_list = []
for injury in injuries:
injuries_list.append(injury.text)
print(injuries_list)

我还在起步,你们才是专业的。我期待着学习。

谢谢,如果你花时间帮助我。

最佳答案

您感兴趣的列的单元格如下所示:<td class="hauptlink"> .但是,最后一列(错过的比赛)的单元格是:<td class="rechts hauptlink wappen_verletzung"> .您的查询将捕获这些不需要的单元格,因为从技术上讲,它们的类与您要查找的单元格匹配,而您真正想要的是所有 td类与 hauptlink 完全匹配的标签.

您可以使用故意只查找 td 的 CSS 选择器使您的标签查询更加具体类恰好是 hauptlink 的标签:

def main():

import requests
from bs4 import BeautifulSoup

url = "https://www.transfermarkt.de/havard-nordtveit/verletzungen/spieler/192565"

headers = {
"user-agent": "Mozilla/5.0"
}

response = requests.get(url, headers=headers)
response.raise_for_status()

soup = BeautifulSoup(response.content, "html.parser")

for td in soup.select("td[class='hauptlink']"):
print(td.text)

return 0


if __name__ == "__main__":
import sys
sys.exit(main())

另外,如果你只想从列表中的标签中捕获文本,你可以这样做,这比在循环中附加到列表更可爱:

second_column = list(map(lambda tag: tag.text, soup.select("td[class='hauptlink']")))

关于python - 如何用 BeautifulSoup [Python] 抓取表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62942540/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com