Python 使用BeautifulSoup/Pandas删除历史数据-多页
使用Python进行web抓取的新手,在从以下来源获取表格格式的数据时遇到问题: 我能够从单个页面获得“原始”表格:Python 使用BeautifulSoup/Pandas删除历史数据-多页,python,python-3.x,pandas,beautifulsoup,css-tables,Python,Python 3.x,Pandas,Beautifulsoup,Css Tables,使用Python进行web抓取的新手,在从以下来源获取表格格式的数据时遇到问题: 我能够从单个页面获得“原始”表格: import requests from bs4 import BeautifulSoup page = requests.get("https://www.uzse.uz/trade_results?mkt_id=ALL&date=25.01.2019&search_key=") soup = BeautifulSoup(page.content, 'html
import requests
from bs4 import BeautifulSoup
page = requests.get("https://www.uzse.uz/trade_results?mkt_id=ALL&date=25.01.2019&search_key=")
soup = BeautifulSoup(page.content, 'html.parser')
tbl = soup.find_all(class_= "col-xs-12 table-responsive")
tbl
然而,我们的想法是以表格形式获取过去2年中给定日期(多页)的所有交易,以便进行进一步的探索性分析。此时,我对第二列和第三列中的URL不感兴趣,只想保留名称(即UZ7004510002 KUMZ,AJ)
我非常感谢任何帮助,因为我正在努力取得进展。此站点只有一个表,因此我们也可以使用
表
并解析第一个url的表信息
page = requests.get("https://www.uzse.uz/trade_results?mkt_id=ALL&date=25.01.2019&search_key=")
soup = BeautifulSoup(page.content, 'html.parser')
tbl = soup.find('table', attrs={'class': 'table centered-table'}).findAll('td')
array = []
for x in range(0,len(tbl)):
array.append(tbl[x].text.strip())
print array
这只是这个url。你想在过去的两年里解析它,所以它太长了
若你们想从底部改变页面。您需要根据底部的li
数量更改url
您可以使用
Python-Selenium-Web-Driver
创建自动更改日期的机器人,单击按钮并解析数据,然后返回结果 至于将输出转换为表,您当然可以使用BeautifulSoup来实现,这没关系,但需要做一些工作。但是如果我看到有
标签,我的默认选择是使用pandas,因为它可以为您完成工作。如果它能以可再利用的方式返回我想要的,我会这样做,如果需要的话,只需稍微操纵一下数据帧:
import requests
from bs4 import BeautifulSoup
import pandas as pd
page = requests.get("https://www.uzse.uz/trade_results?mkt_id=ALL&date=25.01.2019&search_key=")
tables = pd.read_html(page.text)
table = tables[0]
输出:
print (table)
Время ... Объём торгов
0 25 янв., 15:02 ... UZS 421 080
1 25 янв., 15:02 ... UZS 261 360
2 25 янв., 15:02 ... UZS 682 440
3 25 янв., 15:02 ... UZS 27
4 25 янв., 15:02 ... UZS 15 152 000
5 25 янв., 15:02 ... UZS 13 500 000
6 25 янв., 15:02 ... UZS 2 008 245
7 25 янв., 15:02 ... UZS 17 463
8 25 янв., 15:02 ... UZS 582 100
9 25 янв., 15:02 ... UZS 11 642
10 25 янв., 15:02 ... UZS 6 117 871
11 25 янв., 15:02 ... UZS 4 581,9
12 25 янв., 15:02 ... UZS 550 000
13 25 янв., 15:02 ... UZS 7 232 500
14 25 янв., 15:02 ... UZS 1
15 25 янв., 14:29 ... UZS 32 000
16 25 янв., 14:29 ... UZS 9 000
17 25 янв., 14:29 ... UZS 5 337 000
18 25 янв., 14:29 ... UZS 1 098 000
19 25 янв., 14:26 ... UZS 122,4
[20 rows x 9 columns]
正如Omer所说,只需迭代这些值即可转到不同的页面。感谢您的关注。我正在考虑通过URL(上面写着
25.01.2019
)来更改日期。但首先我需要弄清楚如何从多个页面获取一个日期的所有数据。。。我在将输出转换为数据表格式时也遇到问题…给定url和https://www.uzse.uz/trade_results?date=25.01.2019&mkt_id=ALL&page=1&search_key=
是一样的。您可以根据页数逐个增加页数。是的,但我不知道每个日期的确切页数。我想,这也应该考虑到……每个页面都有
,并且有一个href,比如/trade\u results?date=25.01.2019&;mkt_id=全部&;页码=12&;search_key=
此页面=12
12是url中可以更改每个页面的最后一个页面。您需要获取此值并根据此数字增加url的页面使用pandas
的版本更符合逻辑且更简单。非常感谢。