繁体   English   中英

导出 web 刮成 csv 文件

[英]Exporting web scraping into csv file

import csv
import requests
from bs4 import BeautifulSoup

page = requests.get("https://www.cbssports.com/nba/stats/playersort/nba/year-2019-season-preseason-category-scoringpergame")
soup = BeautifulSoup(page.content, 'html.parser')

for record in soup.find_all('tr'):
    try:
        print(record.contents[0].text)
        print(record.contents[6].text)
        print(record.contents[7].text)
        print(record.contents[8].text)
        print(record.contents[9].text)
        print(record.contents[10].text)
        print(record.contents[12].text)
        print(record.contents[13].text)
        print(record.contents[14].text)
        print(record.contents[15].text)
    except:
        pass
    print('\n')

def scrape_data(url):

    response = requests.get("https://www.cbssports.com/nba/stats/playersort/nba/year-2019-season-preseason-category-scoringpergame", timeout=10)
    soup = BeautifulSoup(response.content, 'html.parser')

    table = soup.find_all('table')[1]

    rows = table.select('tbody > tr')

    header = [th.text.rstrip() for th in rows[1].find_all('th')]

    with open('statsoutput.csv', 'w') as csv_file:
        writer = csv.writer(csv_file)
        writer.writerow(header)
        for row in rows[1:]:
            data = [th.text.rstrip() for th in row.find_all('td')]
            writer.writerow(data)


if __name__=="__main__":
    url = "https://www.cbssports.com/nba/stats/playersort/nba/year-2019-season-preseason-category-scoringpergame"
    scrape_data(url)

我一直试图从 web 页面导出统计信息到csv file 当我运行我的代码时,第一部分工作正常并检索我想要的数据。 但是 function 无法将其导出到csv file中,并且我遇到了这个错误:

table = soup.find_all('table')[1]
IndexError: list index out of range

我不确定为什么。

您收到此错误是因为此站点只有一个<table /> html 元素。 所以soupe.find_all()返回一个长度为 1 的列表。你可以通过soupe.find_all('table')[0]解决这个错误,或者以一种干净的方式, soup.table

我还检查并测试了您的代码并推荐:

table = soup.table
rows = table.find_all('tr')

这些更改后一切都会正常工作。 您可以在此处检查此代码运行。 希望能帮助到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM