- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要从玩家的各个页面中抓取表格,但有时如果有多个同名玩家,搜索将转到玩家列表。我想要那个在 NBA 打球的球员。例如,对于 Sergio Rodriguez,会显示一个列表 ( https://basketball.realgm.com/search?q=Sergio+Rodriguez ),因此它不会转到单个页面,而是显示“没有 Sergio Rodriguez 的国际表”。我想进入在 NBA 效力的塞尔吉奥·罗德里格斯 (Sergio Rodriguez) 的个人页面(排名第二)并抓取表格,但我不知道该怎么做。我如何使用 html 进入该特定玩家的页面并继续抓取?
HTML:
<tbody>
<tr>
<td class="nowrap tablesaw-cell-persist" rel="Rodriguez Febles, Sergio"><a href="/player/Sergio-Rodriguez-Febles/Summary/50443">Sergio Rodriguez Febles</a></td>
<td class="nowrap" rel="5">SF</td>
<td class="nowrap" rel="79">6-7</td>
<td class="nowrap" rel="202">202</td>
<td class="nowrap" rel="19931018"><a href="/info/birthdays/19931018/1">Oct 18, 1993</a></td>
<td class="nowrap" rel="2015"><a href="/nba/draft/past_drafts/2015" target="_blank">2015</a></td>
<td class="nowrap" rel="N/A">-</td>
<td rel="-">-</td>
</tr>
<tr>
<td class="nowrap tablesaw-cell-persist" rel="Rodriguez, Sergio"><a href="/player/Sergio-Rodriguez/Summary/85">Sergio Rodriguez</a></td>
<td class="nowrap" rel="1">PG</td>
<td class="nowrap" rel="75">6-3</td>
<td class="nowrap" rel="176">176</td>
<td class="nowrap" rel="19860612"><a href="/info/birthdays/19860612/1">Jun 12, 1986</a></td>
<td class="nowrap" rel="2006"><a href="/nba/draft/past_drafts/2006" target="_blank">2006</a></td>
<td class="nowrap" rel="N/A">-</td>
<td rel="NYK, PHL, POR, SAC"><a href="/nba/teams/New-York-Knicks/20/Rosters/Regular/2010">NYK</a>, <a href="/nba/teams/Philadelphia-Sixers/22/Rosters/Regular/2017">PHL</a>, <a href="/nba/teams/Portland-Trail-Blazers/24/Rosters/Regular/2009">POR</a>, <a href="/nba/teams/Sacramento-Kings/25/Rosters/Regular/2010">SAC</a></td>
</tr>
<tr>
<td class="nowrap tablesaw-cell-persist" rel="Rodriguez, Sergio"><a href="/player/Sergio-Rodriguez/Summary/39601">Sergio Rodriguez</a></td>
<td class="nowrap" rel="3">SG</td>
<td class="nowrap" rel="76">6-4</td>
<td class="nowrap" rel="-">-</td>
<td class="nowrap" rel="19771012"><a href="/info/birthdays/19771012/1">Oct 12, 1977</a></td>
<td class="nowrap" rel="1999"><a href="/nba/draft/past_drafts/1999" target="_blank">1999</a></td>
<td class="nowrap" rel="N/A">-</td>
<td rel="-">-</td>
</tr>
</tbody>
import requests
from bs4 import BeautifulSoup
import pandas as pd
playernames=['Carlos Delfino', 'Sergio Rodriguez']
result = pd.DataFrame()
for name in playernames:
fname=name.split(" ")[0]
lname=name.split(" ")[1]
url="https://basketball.realgm.com/search?q={}+{}".format(fname,lname)
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
# check the response url
if (response.url == "https://basketball.realgm.com/search..."):
# parse the search results, finding players who played in NBA
... get urls from the table ...
soup.table... # etc.
foreach url in table:
response = requests.get(player_url)
soup = BeautifulSoup(response.content, 'html.parser')
# call the parse function for a player page
...
parse_player(soup)
else: # we have a player page
# call the parse function for a player page, same as above
...
parse_player(soup)
try:
table1 = soup.find('h2',text='International Regular Season Stats - Per Game').findNext('table')
table2 = soup.find('h2',text='International Regular Season Stats - Advanced Stats').findNext('table')
df1 = pd.read_html(str(table1))[0]
df2 = pd.read_html(str(table2))[0]
commonCols = list(set(df1.columns) & set(df2.columns))
df = df1.merge(df2, how='left', on=commonCols)
df['Player'] = name
except:
print ('No international table for %s.' %name)
df = pd.DataFrame([name], columns=['Player'])
最佳答案
使用 if 条件检查元素的文本是否与 Sergio Rodriguez
匹配,然后转到该 block 并获取最新的 url,然后获取汤等。
import requests
from bs4 import BeautifulSoup
import pandas as pd
playernames=['Carlos Delfino', 'Sergio Rodriguez','Nikola Jokic','Brandon Jennings','Thon Maker']
result = pd.DataFrame()
for name in playernames:
fname=name.split(" ")[0]
lname=name.split(" ")[1]
url="https://basketball.realgm.com/search?q={}+{}".format(fname,lname)
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
#Add check here if matches with `Sergio Rodriguez` then go to if clause
if soup.find('a',text=name).text==name:
url="https://basketball.realgm.com"+soup.find('a',text=name)['href']
print(url)
response = requests.get(url)
soup = BeautifulSoup(response.text, 'lxml')
try:
table1 = soup.find('h2',text='International Regular Season Stats - Per Game').findNext('table')
table2 = soup.find('h2',text='International Regular Season Stats - Advanced Stats').findNext('table')
df1 = pd.read_html(str(table1))[0]
df2 = pd.read_html(str(table2))[0]
commonCols = list(set(df1.columns) & set(df2.columns))
df = df1.merge(df2, how='left', on=commonCols)
df['Player'] = name
print(df)
except:
print ('No international table for %s.' %name)
df = pd.DataFrame([name], columns=['Player'])
控制台你可以看到df正在打印。
https://basketball.realgm.com/player/Carlos-Delfino/Summary/446
Season Team ... PER Player
0 2002-03 Fortituto Kontatto Bologna ... 15.38 Carlos Delfino
1 2003-04 * All Teams ... 16.08 Carlos Delfino
2 2003-04 * Fortituto Kontatto Bologna ... 15.15 Carlos Delfino
3 2003-04 * Fortituto Kontatto Bologna ... 16.58 Carlos Delfino
4 2008-09 Khimki ... 19.48 Carlos Delfino
5 2016-17 Boca Juniors ... 14.82 Carlos Delfino
6 2017-18 * All Teams ... -0.76 Carlos Delfino
7 2017-18 * KIROLBET Baskonia Vitoria-Gasteiz ... 0.21 Carlos Delfino
8 2017-18 * KIROLBET Baskonia Vitoria-Gasteiz ... -6.67 Carlos Delfino
9 2018-19 * All Teams ... 15.37 Carlos Delfino
10 2018-19 * Fiat Torino ... 13.67 Carlos Delfino
11 2018-19 * Fortituto Kontatto Bologna ... 22.76 Carlos Delfino
12 2018-19 * Fiat Torino ... 12.78 Carlos Delfino
[13 rows x 41 columns]
https://basketball.realgm.com/player/Sergio-Rodriguez/Summary/85
Season Team ... PER Player
0 2003-04 Movistar Estudiantes ... 0.00 Sergio Rodriguez
1 2004-05 * All Teams ... 13.81 Sergio Rodriguez
2 2004-05 * Movistar Estudiantes ... 14.55 Sergio Rodriguez
3 2004-05 * Movistar Estudiantes ... 11.17 Sergio Rodriguez
4 2005-06 * All Teams ... 12.50 Sergio Rodriguez
5 2005-06 * Movistar Estudiantes ... 13.80 Sergio Rodriguez
6 2005-06 * Movistar Estudiantes ... 6.09 Sergio Rodriguez
7 2010-11 * All Teams ... 13.45 Sergio Rodriguez
8 2010-11 * Real Madrid ... 15.26 Sergio Rodriguez
9 2010-11 * Real Madrid ... 12.83 Sergio Rodriguez
10 2011-12 * All Teams ... 14.07 Sergio Rodriguez
11 2011-12 * Real Madrid ... 14.84 Sergio Rodriguez
12 2011-12 * Real Madrid ... 0.00 Sergio Rodriguez
13 2011-12 * Real Madrid ... 15.55 Sergio Rodriguez
14 2012-13 * All Teams ... 17.57 Sergio Rodriguez
15 2012-13 * Real Madrid ... 19.51 Sergio Rodriguez
16 2012-13 * Real Madrid ... 0.00 Sergio Rodriguez
17 2012-13 * Real Madrid ... 30.02 Sergio Rodriguez
18 2013-14 * All Teams ... 22.89 Sergio Rodriguez
19 2013-14 * Real Madrid ... 22.05 Sergio Rodriguez
20 2013-14 * Real Madrid ... 27.16 Sergio Rodriguez
21 2013-14 * Real Madrid ... 18.64 Sergio Rodriguez
22 2014-15 * All Teams ... 19.18 Sergio Rodriguez
23 2014-15 * Real Madrid ... 18.10 Sergio Rodriguez
24 2014-15 * Real Madrid ... 21.48 Sergio Rodriguez
25 2014-15 * Real Madrid ... 20.10 Sergio Rodriguez
26 2015-16 * All Teams ... 17.59 Sergio Rodriguez
27 2015-16 * Real Madrid ... 17.87 Sergio Rodriguez
28 2015-16 * Real Madrid ... 20.14 Sergio Rodriguez
29 2015-16 * Real Madrid ... 9.32 Sergio Rodriguez
30 2015-16 * Real Madrid ... 16.95 Sergio Rodriguez
31 2017-18 * All Teams ... 19.19 Sergio Rodriguez
32 2017-18 * CSKA Moscow ... 19.36 Sergio Rodriguez
33 2017-18 * CSKA Moscow ... 17.89 Sergio Rodriguez
34 2018-19 * All Teams ... 17.83 Sergio Rodriguez
35 2018-19 * CSKA Moscow ... 14.92 Sergio Rodriguez
36 2018-19 * CSKA Moscow ... 21.10 Sergio Rodriguez
37 2018-19 * CSKA Moscow ... -11.12 Sergio Rodriguez
38 2019-20 * All Teams ... 18.23 Sergio Rodriguez
39 2019-20 * EA7 Emporio Armani Milano ... 18.26 Sergio Rodriguez
40 2019-20 * EA7 Emporio Armani Milano ... 18.06 Sergio Rodriguez
[41 rows x 41 columns]
https://basketball.realgm.com/player/Nikola-Jokic/Summary/49571
Season Team League ... DRtg PER Player
0 2012-13 * All Teams All Leagues ... 98.5 14.15 Nikola Jokic
1 2012-13 * KK Mega Leks Junior Team Belgrade ... 95.2 21.13 Nikola Jokic
2 2012-13 * KK Mega Bemax KLS ... 104.9 3.48 Nikola Jokic
3 2013-14 * All Teams All Leagues ... 108.5 19.42 Nikola Jokic
4 2013-14 * KK Mega Bemax Liga ABA ... 108.4 21.18 Nikola Jokic
5 2013-14 * KK Mega Bemax KLS ... 109.0 21.79 Nikola Jokic
6 2014-15 * All Teams All Leagues ... 100.6 24.61 Nikola Jokic
7 2014-15 * KK Mega Bemax Liga ABA ... 100.5 24.02 Nikola Jokic
8 2014-15 * KK Mega Bemax KLS ... 100.8 31.50 Nikola Jokic
[9 rows x 41 columns]
https://basketball.realgm.com/player/Brandon-Jennings/Summary/1609
Season Team ... PER Player
0 2008-09 * All Teams ... 13.05 Brandon Jennings
1 2008-09 * Virtus Roma ... 12.94 Brandon Jennings
2 2008-09 * Virtus Roma ... 12.43 Brandon Jennings
3 2017-18 Shanxi Zhongyu ... 21.51 Brandon Jennings
4 2018-19 * All Teams ... 12.52 Brandon Jennings
5 2018-19 * Zenit Saint Petersburg ... 14.60 Brandon Jennings
6 2018-19 * Zenit Saint Petersburg ... 10.16 Brandon Jennings
[7 rows x 41 columns]
https://basketball.realgm.com/player/Thon-Maker/Summary/42192
No international table for Thon Maker.
关于python - 使用 html 进入 url 并抓取表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59901366/
如本answer所述,如果浏览器不支持 e,可以设置后备游标。 G。 光标:抓取;。我现在的问题是获取这些图像。在我的驱动器上本地搜索“.cur”只给了我系统光标,其中 grab.cur 和 grab
以下代码在计算机上运行以从 Instagram 帐户中抓取数据。当我尝试在 VPS 服务器上使用它时,我被重定向到 Instagram 登录页面,因此脚本不起作用。 为什么当我在电脑上或服务器上时,I
我在使用 Ruby 和 Mechanize 将 POST 查询传递到站点的网站上。访问站点的查询基于 firebug,如下所示 param.PrdNo=-1¶m.Type=Prop¶m
我正在尝试抓取一个具有多个页面结果的网站,例如“1、2、3、4、5...”。 每个分页号都是到另一个页面的链接,我需要抓取每个页面。 到目前为止,我想出了这个: while lien = page.l
我正在使用 HtmlAgilityPack 在 C# Asp.Net 中执行 Scraping,到目前为止,我在从多个 Web 执行 Scratch 时没有遇到问题,但是,尝试弹出以下代码时出现错误
如果我有一个 css 文件做这样的事情 #foo:after{content:"bar;} ,有没有办法用 javascript 获取 :after 的内容?获取父元素的内容只返回 #foo 元素的内
问题是这样的: 我有一个 Web 应用程序 - 一个经常更改的通知系统 - 在一系列本地计算机上运行。该应用程序每隔几秒刷新一次以显示新信息。计算机仅显示信息,没有键盘或任何输入设备。 问题是,如果与
我想制作一个程序来模拟用户浏览网站和点击链接。必须启用 Cookie 和 javascript。我已经在 python 中成功地做到了这一点,但我想把它写成一种可编译的语言(python ide 不会
我制作了这个小机器人,它通过搜索参数列表进行处理。它工作正常,直到页面上有几个结果: product_prices_euros 给出了一半为空的项目列表。因此,当我与 product_prices_c
我需要找到一个单词的匹配项,例如: 在网上找到所有单词“学习”https://www.georgetown.edu/(结果:4个字)(您可以看到它按CTRL + F并搜索) 我有我的 Python 代
有一个站点\资源提供一些一般统计信息以及搜索工具的界面。这种搜索操作成本高昂,因此我想限制频繁且连续(即自动)的搜索请求(来自人,而不是来自搜索引擎)。 我相信有很多现有的技术和框架可以执行一些情报抓
这并不是真正的抓取,我只是想在网页中找到类具有特定值的 URL。例如: 我想获取 href 值。关于如何做到这一点的任何想法?也许正则表达式?你能发布一些示例代码吗?我猜 html 抓取库,比如 B
我正在使用 scrapy。 我正在使用的网站具有无限滚动功能。 该网站有很多帖子,但我只抓取了 13 个。 如何抓取剩余的帖子? 这是我的代码: class exampleSpider(scrapy.
我正在尝试从这个 website 中抓取图像和新闻 url .我定义的标签是 root_tag=["div", {"class":"ngp_col ngp_col-bottom-gutter-2 ng
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭上个月。 Improve this ques
我在几个文件夹中有数千个 html 文件,我想从评论中提取数据并将其放入 csv 文件中。这将允许我为项目格式化和清理它。例如,我在这个文件夹中有 640 个 html 文件: D:\My Web S
我在编写用于抓取网页的实用程序时遇到了一个问题。 我正在发送 POST 请求来检索数据,我模仿我正在抓取的网络行为(根据使用 fiddler 收集的信息)。 我已经能够自动替换我的 POST 中除 V
对于 Googlebot 的 AJAX 抓取,我在我的网站中使用“_escaped_fragment_”参数。 现在我查看了 Yandex 对我网站的搜索结果。 我看到搜索结果中不存在 AJAX 响应
我正在尝试抓取网站的所有结果页面,它可以工作,但有时脚本会停止并显示此错误: 502 => Net::HTTPBadGateway for https://website.com/id/12/ --
我是一个学习网络爬虫的初学者,由于某种原因我无法爬网this地点。当我在 Chrome 中检查它时,代码看起来不错,但是当我用 BeautifulSoup 阅读它时,它不再是可刮的。汤提到“谷歌分析”
我是一名优秀的程序员,十分优秀!