怎样用bs4的find或是select方法获取我所需要的这行?

url="https://www.basketball-reference.com/teams/MIN/2018.html#all_per_game"
我需要的是Per Game这个表格中Jimmy Butler这一行的数据,用

url = "http://www.basketball-reference.com/teams/MIN/2018.html#all_per_game"
headers = {'content-type': 'application/json',
           'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:22.0) Gecko/20100101 Firefox/22.0'}

req = requests.get(url, headers=headers)
content = req.content

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

trs = soup.find("tr", attrs={"data-row": "0"})

print trs

trs是一个空列表
也试过用select,也是获取不到内容,并没有javascripts,但就是死活没办法,求教应该怎么写这个find?

阅读 6.2k
1 个回答

clipboard.png
页面应该是有做过反爬虫处理的,有关数据在html源码中是被注释掉的,可以先把注释符号去掉再进行解析

import requests
from bs4 import BeautifulSoup

r = requests.get('https://www.basketball-reference.com/teams/MIN/2018.html#all_per_game')
// 去掉html的注释符号,并进行解析
soup = BeautifulSoup(r.text.replace('<!--','').replace('-->',''),'lxml')
trs = soup.select('#per_game > tbody > tr')
print(trs[0])
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题