【问题标题】:Python - Beautiful Soup - Retrieving Table DataPython - Beautiful Soup - 检索表数据
【发布时间】:2017-06-30 19:23:25
【问题描述】:

这是我在 StackOverflow 中的第一个问题,非常感谢您的帮助!我正在尝试使用来自该页面的 NUFORC 的 python 2.7 和 R 抓取表数据并转换为 csv 文件:http://www.nuforc.org/webreports/ndxl.html。我已经看过几十个教程并试图跟随,但没有一个适用于这个实例。我查看了beautifulsoup 文档,但我没有找到可以找到线索的东西。似乎连读取剪贴板命令都不起作用(?)

最有希望的方法如下。这是我所能做到的,因为我无法在此页面上复制讲师的笔记。

import urllib2
from urllib2 import urlopen
from bs4 import BeautifulSoup
url= "http://www.nuforc.org/webreports/ndxl.html"

def make_soup(url):
    thepage = urllib2.urlopen(url)
    soupdata = BeautifulSoup(thepage, "html.parser")
    return soupdata

soup = make_soup ("http://www.nuforc.org/webreports/ndxl.html")

for record in soup.findAll('tr'):
    for data in record.findAll('td'):
        print (data.text)

虽然我现在至少可以打印数据,但我不知道如何继续将数据提取到更有用的 .csv 文件中。

提前感谢您的帮助:)

【问题讨论】:

    标签: python-2.7 csv web-scraping beautifulsoup


    【解决方案1】:

    使用csv.writer,您可以将数据直接写入嵌套 for 循环中的 csv 文件。对于行中的每个行值,您可以将其存储在一个数组中,然后使用 write_row 将该数组写入该行。确保每行都将数组初始化为空,否则您可能最终会一遍又一遍地添加到前一个数组中。

    【讨论】:

    • 太好了,谢谢你,我会检查那个命令并更新!我希望在 .csv 输出之前将 web 表数据保存到 python 中的数据框中。关于如何进行的任何建议?谢谢!
    • 你可以使用Panda dataframes,或者如果你想更简单,你可以做一个数组数组。 row_list = list() \n for row in table \n columns = list() \n for item in row \n\t columns.append(item) \n row_list.append(columns)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-30
    • 1970-01-01
    • 2017-12-07
    • 2018-02-02
    • 2019-04-01
    • 2018-04-22
    相关资源
    最近更新 更多