【问题标题】:How to scrape html in python with bs4 and save data to csv如何使用bs4在python中抓取html并将数据保存到csv
【发布时间】:2016-10-23 00:21:25
【问题描述】:

我希望从网站中提取数据并将其以干净的格式保存到 csv。目前我的代码没有运行并返回错误:“AttributeError: 'int' object has no attribute 'writerow'”

from bs4 import BeautifulSoup
import urllib.request
import csv
url="http://www.covers.com/pageLoader/pageLoader.aspx?page=/data/nfl/injury/injuries.html"

arr=[[],[],[],[],[]]

with urllib.request.urlopen(url) as url:
    s = url.read()
    soup = BeautifulSoup(s)
    tables = soup.find_all("table", class_="data")
    for table in tables:
       teams=table.find_all("td", class_="datahead")
       teamName=teams[0].text
       rrows=table.find_all("tr")
       for rrow in rrows:
           ccols=rrow.find_all("td")
           if len(ccols)>3:
               name=ccols[0].text
               pos=ccols[1].text    
               status=ccols[2].text
               desc=ccols[3].text
               arr[0].append(teamName)
               arr[1].append(name)
               arr[2].append(pos)
               arr[3].append(status)
               arr[4].append(desc)

with open('injuries.csv', 'w', newline='') as datafile:
    a=csv.writer(datafile, delimiter=',')
    for a in range(1000):
        a.writerow([arr[0][a],arr[1][a],arr[2][a],arr[3][a],arr[4][a]])
    datafile.close

任何关于为什么会导致此错误的解释将不胜感激

【问题讨论】:

  • 更改wr=csv.writer(datafile, delimiter=',')wr.writerow(...,您将a 用于写入对象和for 循环。

标签: python beautifulsoup export-to-csv


【解决方案1】:

您将a 用作循环变量和csv.writer 对象的名称。将for a in range(1000) 替换为for i in range(1000),将arr[0][a] 替换为arr[0][i],以此类推。

【讨论】:

  • 为什么对这个和我的投反对票?他们是正确的答案
【解决方案2】:

a=csv.writer(datafile, delimiter=',')
for a in range(1000):

您将a 用作csv.writer,然后立即将其用作索引。换一个。

【讨论】:

    猜你喜欢
    • 2019-03-06
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 2020-10-11
    • 1970-01-01
    • 2019-06-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多