python - 使用 pandas read_html() 时遇到问题:ValueError
问题描述
from bs4 import BeautifulSoup
from urllib.request import urlopen
import requests
url = "https://finance.naver.com/item/sise_day.nhn?code=068270&page=1"
headers = {'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36'}
res = requests.get(url, verify=True, headers=headers)
with urlopen(url) as doc:
html = BeautifulSoup(res.text, 'lxml')
pgrr = html.find('td', class_='pgRR')
s = str(pgrr.a['href']).split('=')
last_page = s[-1]
df = pd.DataFrame()
sise_url = 'http://finance.naver.com/item/sise_day.nhn?code=068270'
for page in range(1, int(last_page)+1):
page_url = '{}&page={}'.format(sise_url, page)
df = df.append(pd.read_html(page_url, encoding='euc-kr', header='0')[0])
df = df.dropna() # 값이 빠진 행을 제거한다.
print(df)
我在 Naver Finance 中抓取每日股票数据时遇到此值错误。我可以毫无问题地获取 url,但如果我使用 read_html() 我会Value Error:Table not found
遇到问题df = df.append(pd.read_html(page_url, encoding='euc-kr', header='0')[0])
。请给一些建议。
解决方案
我不读韩文......但是pd.read_html()
得到一个错误页面。requests.get()
通过标题解决了这个问题。然后传递res.text
给read_html()
from bs4 import BeautifulSoup
from urllib.request import urlopen
import requests
import pandas as pd
url = "https://finance.naver.com/item/sise_day.nhn?code=068270&page=1"
headers = {'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36'}
res = requests.get(url, verify=True, headers=headers)
with urlopen(url) as doc:
html = BeautifulSoup(res.text, 'lxml')
pgrr = html.find('td', class_='pgRR')
s = str(pgrr.a['href']).split('=')
last_page = s[-1]
df = pd.DataFrame()
sise_url = 'http://finance.naver.com/item/sise_day.nhn?code=068270'
for page in range(1, int(last_page)+1):
page_url = '{}&page={}'.format(sise_url, page)
res = requests.get(page_url, verify=True, headers=headers)
df = df.append(pd.read_html(res.text, encoding='euc-kr')[0])
推荐阅读
- azure-devops - 直接从测试结果中添加带有重现步骤的错误
- mbed - 如何访问 MBED 中的设备特定功能?
- c# - C# - 屏幕截图源过滤器 - 直接显示
- node.js - SAML 注销失败:颁发者不匹配(NodeJS + Okta)
- php - 如何在 shell 中检查正确数量的 STDIN 用户输入?
- knockout.js - 使用 .extend 时如何获取底层的可观察值?
- javascript - 限制用户访问其他用户配置文件
- c# - 无法更改 DataGridView 中复选框的默认值(Windows 窗体应用程序)
- python - 如何停止在scrapy中重复循环?
- nativescript - 如何在预览模式下在 NativeScript 中构建 npm 依赖项?