Python 使用BeautifulSoup/Pandas删除历史数据-多页

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

使用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.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
    的版本更符合逻辑且更简单。非常感谢。