[英]How do you read HTML in Pandas with a dynamic table with no updating URL?
我正在從https://www.wowprogress.com/獲取數據並使用 Pandas 來完成它。 我將 HTML 讀入數據框,並計算頁面上的表格。 我想要的表是第一個索引從 1 到 20 的表,依此類推。
問題是頁面上有一個“下一步”按鈕,您可以按下它……但 URL 根本沒有改變。
我在下面使用的代碼:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from unicodedata import normalize
table_wow = pd.read_html('https://www.wowprogress.com/')
print (table_wow)
這顯示了我最后頁面上的第一個表格。 但我無法弄清楚如何模擬按下下一個按鈕並通過我想要的任何頁面獲取第 2 頁上的其余數據。
關於如何做到這一點的任何提示,或者我可能缺少什么?
檢查網絡活動時,您可以看到下一頁是從https://www.wowprogress.com/pve/rating/next/0/rating/
加載的, /next/
后面的整數隨着頁碼的增加而增加。 所以你可以循環瀏覽后續頁面:
import pandas as pd
import time
table_wow = pd.read_html('https://www.wowprogress.com/')[1]
max_page = 10
for i in range(0,max_page):
table = pd.read_html(f'https://www.wowprogress.com/pve/rating/next/{i}/rating/')[1]
table_wow = table_wow.append(table, ignore_index=True)
time.sleep(1.5)
這是從 api url 進行分頁的工作示例,如下所示:
import requests
import pandas as pd
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36'}
api_url = ['https://www.wowprogress.com/pve/rating/next/'+str(x)+'/rating' for x in range(1,5)]
for url in api_url:
req = requests.get(url,headers=headers)
wiki_table = pd.read_html(req.text, attrs = {"class":"rating"} )
df = wiki_table[0]#.to_csv('score.csv',index = False)
print(df)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.