[英]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 之前添加Id
和Name
列:
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.