直接从第三方网站上载CSV文件

时间:2018-08-20 04:38:30

标签: javascript csv

当我使用第三方网站的链接生成CSV文件时,我正在尝试将其自动上传到后端。例如,如果您查看我的梦幻足球联赛(https://www.fantrax.com/fantasy/league/kg59suyejg6n1zg0/players)中的可用球员,您会看到一个下载CSV文件的选项。我希望能够使用该链接,而不是直接在客户端中打开CSV文件或直接将其发送到后端,而不是在本地保存文件。只是有点复杂,不允许使用CORS标头,所以我不能使用axios请求。

我只是在寻找一种JavaScript方法来在浏览器中打开该文件或将其保存到远程位置而不是本地。

2 个答案:

答案 0 :(得分:1)

您可以自动执行下载顺序(例如无头浏览器+ Node),并将其作为后台服务运行。

https://developers.google.com/web/updates/2017/04/headless-chrome#node https://blog.phantombuster.com/web-scraping-in-2017-headless-chrome-tips-tricks-4d6521d695e8

答案 1 :(得分:0)

不确定downvote是做什么用的,似乎是d1ck的举动,但是我将发布实际上完成了我所需的代码,尽管我的目的是使用从kimbrys中进行无头浏览的想法。因为我只是想让某些东西正常工作,所以它被黑了。值得注意的是,我在后端使用Django,因此我不得不在python上使用硒而不是节点,并且我也不再下载csv,因为我最终将托管该库并我不知道可以将csv“下载”到托管该服务器的服务器。这样,我至少可以有一个直接指向该脚本的端点,该端点将在后台运行。

import os
import pandas as pd
import numpy as np
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

os.system('cls')

t0 = time.time()
chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument("--disable-gpu")

driver = webdriver.Chrome(executable_path=os.path.abspath('''C:/Program Files (x86)/chromedriver/chromedriver.exe'''), chrome_options=chrome_options)

results_per_page = 500
max_page = 8
try:
    full_list = []
    for page_number in range(1,max_page+1):
        print(f'''page_number {page_number}''')
        driver.get(f'''https://www.fantrax.com/fantasy/league/kg59suyejg6n1zg0/players?view=STATS&positionOrGroup=ALL&seasonOrProjection=PROJECTION_12_235_SEASON&timeframeTypeCode=YEAR_TO_DATE&transactionPeriod=1&miscDisplayType=1&sortType=SCORE&maxResultsPerPage={results_per_page}&statusOrTeamFilter=ALL_AVAILABLE&scoringCategoryType=5&timeStartType=PERIOD_ONLY&pageNumber={page_number}&schedulePageAdj=0&startDate=2018-09-06&endDate=2018-12-30&searchName=&txs=false&teamId=hvnwk9ryjg6n1zqi''')
        names = WebDriverWait(driver, 10).until(EC.presence_of_all_elements_located((By.CLASS_NAME,'scorer__info__name')))
        positions = WebDriverWait(driver, 10).until(EC.presence_of_all_elements_located((By.CLASS_NAME,'scorer__info__positions')))
        for name, pos in zip(names, positions):

            pos = pos.text.replace("\n","")
            position = pos.split(',')[0].split('-')[0]
            team = pos.split('- ')[1]
            full_list.append([name.text, position, team])
finally:
    player_list = []
    position_list = []
    team_list = []
    for entry in full_list:
        player_list.append(entry[0])
        position_list.append(entry[1])
        team_list.append(entry[2])
    df = pd.DataFrame(np.column_stack([player_list,position_list,team_list]),columns=['Player','Position','Team'])
    df.to_csv('Player_database.csv',index=False)
    driver.quit()

print(time.time() - t0)
相关问题