【问题标题】:How can I scrape this table more efficiently?我怎样才能更有效地刮这个表?
【发布时间】:2016-05-15 18:23:28
【问题描述】:

好的,我已经建立了一个程序来抓取雅虎金融。我想要某只股票的历史价格。然后我希望将其写入 Excel 电子表格。它以应有的方式做所有事情,但它为我提供了整个页面上的所有数据!我只需要表中的数据。谢谢。

import urllib
import urllib.request
from bs4 import BeautifulSoup
import os
import requests

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

playerdatasaved=""
soup = make_soup("https://finance.yahoo.com/q/hp?s=USO+Historical+Prices")
for record in soup.findAll('tr'):
playerdata=""
for data in record.findAll('td'):
   playerdata=playerdata+","+data.text
if len(playerdata)!=0:
    playerdatasaved = playerdatasaved + "\n" + playerdata[1:]

header="Open,Close,High,Low"
file = open(os.path.expanduser("Uso.csv"),"wb")
file.write(bytes(header, encoding="ascii",errors='ignore'))
file.write(bytes(playerdatasaved, encoding="ascii",errors='ignore'))

print(playerdatasaved)

【问题讨论】:

  • 你不是在几个小时前在另一个帐户上问过这个问题here 吗? Stack Overflow 不喜欢让多个帐户重复问同一个问题。
  • 如果你在问题中搞砸了,你可以编辑它(问题底部有一个按钮可以做到这一点)
  • 我做了,但没有人回答,我真的需要回答。我知道每个人都是编码之神,并且很讨厌降到我的水平,但我真的没有时间做所有这些......我只需要弄清楚这一点。回答下一个人,我认为混乱是链接。尝试使用此链接:
  • @Jake 它回答...如果您对答案不满意,您应该发表评论并解决它,好吗?
  • @JonClements:OP 不是坦白承认这里有两个帐户吗?

标签: python screen-scraping


【解决方案1】:

获取数据表:

soup = make_soup("https://finance.yahoo.com/q/hp?s=USO+Historical+Prices")
table = [[cell.text for row in soup.findAll('tr')] for cell in soup.findAll('td')]

将数据表写入文件:

import csv

with open("output.csv", "wb") as f:
    writer = csv.writer(f)
    writer.writerows(table)

【讨论】:

    猜你喜欢
    • 2020-04-06
    • 2010-11-21
    • 2018-08-29
    • 1970-01-01
    • 1970-01-01
    • 2010-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多