【问题标题】:Python Web-Scraping text separated by comma用逗号分隔的 Python Web-Scraping 文本
【发布时间】:2021-03-02 13:30:50
【问题描述】:

我在尝试抓取网站数据时遇到了挑战。该网站是here。数据更多的是纯文本,用逗号分隔(日期和价格),我打算使用 python 来抓取它并将其保存为 csv/xlsx,以便以后绘制它们。

这是它的样子

这是我的代码和收到的错误:

ValueError:未找到表!

import pandas as pd
from urllib.request import Request, urlopen
req = Request('https://mojracun.incrementum.si/chartv2/public', headers={'User-Agent': 'Mozilla/5.0'})
webpage = urlopen(req).read()
data = pd.read_html(webpage)

如何抓取页面并在成功提取后将其保存到 csv 以便绘制图表?

【问题讨论】:

  • 感谢 James Z 让它更整洁!

标签: python pandas web-scraping


【解决方案1】:

你可以试试这个:

import pandas as pd
import requests

url = "https://mojracun.incrementum.si/chartv2/public"
data = [i.split(",") for i in requests.get(url).text.split("<br>")]
print(pd.DataFrame(data))

输出:

              0          1
0    2018-12-17   1.000000
1    2018-12-18   1.025792
2    2018-12-19   1.021829
3    2018-12-20   1.035229
4    2018-12-21   1.025792
..          ...        ...
708  2021-02-26  17.799594
709  2021-02-27  17.963089
710  2021-02-28  18.879716
711  2021-03-01  18.351412
712  2021-03-02  19.637481

[713 rows x 2 columns]

或者干脆将其转储到.csv

import pandas as pd
import requests

url = "https://mojracun.incrementum.si/chartv2/public"
data = [i.split(",") for i in requests.get(url).text.split("<br>")]
pd.DataFrame(data).to_csv("table_data.csv", index=False, header=["Date", "Price"])

输出:

【讨论】:

  • 感谢您的帮助!这两项工作!非常感谢。
【解决方案2】:

曾经使用 Panda 创建 csv,我了解您可能会发现哪种解决方案有用

texts=webpage.decode('utf-8') if isinstance(texts,bytes) else webpage 

lists=texts.split('<br>')

lists=lists if isinstance(lists,list) else []

df = pd.DataFrame({'column':lists})

# Save to file =)
df.to_csv('data.csv')

【讨论】:

  • 抱歉这个错字评论,但是dtdf 保存时和texts 没有定义,你检查它的实例,也许用webpage.decode('utf-8') 替换texts ,然后就可以了
  • kuso.sama ,感谢您的提示,让这成为一个较小的错误。但是尊重社区,我会修复这个错误并使代码变得更好。谢谢你,kuso.sama)
  • 感谢布莱的帮助!
猜你喜欢
  • 1970-01-01
  • 2016-11-29
  • 2014-03-18
  • 2020-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-19
  • 1970-01-01
相关资源
最近更新 更多