簡體   English   中英

Web BS4報廢

[英]Web Scraping by BS4

我正在使用以下代碼來抓取動態內容網站。 我被幫助改進了我的代碼以抓取一頁內容。 現在,我想添加一個 FOR 循環來抓取多個頁面並將相關名稱添加為新列以區分每個頁面。

ID 姓名
HK_2019_D105 名稱1
HK_2018_C509 名稱2

output 將所有頁面合並為一個 dataframe。 請建議如何改進以下代碼。

import pandas as pd
import requests
Id = df['Id']

cookies = {
    'BotMitigationCookie_9518109003995423458': '343775001600940465b2KTzJpwY5pXpiVNIRRi97Z3ELk='
}

for j in Id:
    def main(url):
        r = requests.post(url, cookies=cookies)
        df = pd.read_html(r.content, header=0, attrs={'class':'table_bd f_tal f_fs13'})
        new = pd.concat(df, ignore_index=True)
        data = pd.DataFrame(new, columns=['Date','Type','Racecourse/Track','Workouts','Gear'])
        data.to_csv('data'+str(j)+'.csv')
    
    main('https://racing.hkjc.com/racing/information/English/Trackwork/TrackworkResult.aspx?HorseId='+str(j)+'')

Output:

標題1 標頭2 姓名
第一的 名稱1
第二 名稱1
第一的 名稱2
第二 名稱2

假設您嘗試將每個請求合並到一個 CSV 文件中,您可以使用.append() function。 可以在執行 append 之前添加IdName列:

import pandas as pd
import requests

df_ids = pd.read_csv('ids.csv')
cookies = {'BotMitigationCookie_9518109003995423458': '343775001600940465b2KTzJpwY5pXpiVNIRRi97Z3ELk='}
df_output = pd.DataFrame(columns=['Date', 'Type', 'Racecourse/Track', 'Workouts', 'Gear', 'Id', 'Name'])

for id, name in df_ids.itertuples(index=False):
    print(f'Getting: {id} for {name}')
    
    url = f'https://racing.hkjc.com/racing/information/English/Trackwork/TrackworkResult.aspx?HorseId={id}'
    r = requests.post(url, cookies=cookies)
    df = pd.read_html(r.content, header=0, attrs={'class':'table_bd f_tal f_fs13'})[0]
    df['Id'] = id
    df["Name"] = name
    
    df_output = df_output.append(df, ignore_index=True)

df_output.to_csv('output.csv', index=False)

給你一個output.csv文件開始:

Date,Type,Racecourse/Track,Workouts,Gear,Id,Name
10/02/2021,Trotting,Sha Tin SmT,SmT 1 Round - Fast (R.B.),H,HK_2019_D105,Name1
09/02/2021,Swimming,Sha Tin,,,HK_2019_D105,Name1
09/02/2021,Trotting,Sha Tin SmT,SmT 1 Round - Fast (R.B.),H,HK_2019_D105,Name1
08/02/2021,Swimming,Sha Tin,,,HK_2019_D105,Name1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM