为什么在使用findAll

时间:2019-05-07 18:07:08

标签: web-scraping beautifulsoup

当我在搜索表格时使用BeautifulSoup库中的findAll方法时,我尝试从以下URL https://www.basketball-reference.com/boxscores/201810160GSW.html中提取“四个因素”表格,我看不到该表格,也看不到“线分数”表。我只关心“四个因素”表,但是我发现有关“线分数”表的注释可能是有用的信息。

URL2 = 'https://www.basketball-reference.com/boxscores/201810160GSW.html'
page2 = requests.get(URL2)
page2 = page2.text
soup2 = bs4.BeautifulSoup(page2, 'html.parser')
content = soup2.findAll('table')

如果查看内容,则可以在页面上找到其他4个表格,但是“四个因素”和“线分数”未显示在此处。除了可以帮助我提取“四个因素”表之外,您还能解释为什么它不显示在内容中吗?

1 个答案:

答案 0 :(得分:0)

它出现在评论之一中,这就是为什么我没有找到它的原因。

import requests
from bs4 import BeautifulSoup , Comment
import pandas as pd

r =requests.get('https://www.basketball-reference.com/boxscores/201810160GSW.html')
soup = BeautifulSoup(r.text,'lxml')
comments= soup.find_all(string=lambda text:isinstance(text,Comment))

for comment in comments:
    if 'id="four_factors"' in comment:
        soup = BeautifulSoup(comment, 'lxml')
        break
table = soup.select_one('#four_factors')
df = pd.read_html(str(table))[0].fillna('')
print(df)