Скачать CSV с защищенного паролем сайта - PullRequest
0 голосов
/ 10 апреля 2020

Я хочу автоматизировать / запланировать загрузку файла CSV с веб-сайта с ограниченным паролем. К сожалению, веб-сайт не предоставляет REST API.

Я пытался httpwebrequest, но запрос POST фактически отправляется на другой сайт и выглядит так, как будто он требует, чтобы источником был домен сайта, на котором я веду журнал. в. Если я вручную отправляю запрос POST, он не выполняется из-за ограничений CORS (поскольку источником будет IP-адрес / домен, с которого я запускаю приложение).

Я вручную воссоздал POST JSON, но сервер возвращает ошибку 500 Я подумал об использовании Selenium, но есть проблемы, которые не так просто решить. Есть также AutoIt, который мне еще предстоит изучить.

Как лучше всего это автоматизировать? Метод httpwebrequest предпочтительнее, но я думаю, что ограничения CORS предотвратят это.

1 Ответ

0 голосов
/ 17 апреля 2020

У меня нет вашего веб-сайта, но вот несколько вариантов, с помощью которых вы можете объединиться и получить эту работу.

# basic web scraping
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
from bs4 import BeautifulSoup
import time
from time import sleep

browser = webdriver.Chrome("C:/Selenium/chromedriver.exe")
wait = WebDriverWait(browser, 10)

url = 'https://www.nissanusa.com/dealer-locator.html'
browser.get(url)

time.sleep(10) # wait page open complete

html = browser.page_source
soup = BeautifulSoup(html, "html.parser")

data = soup.findAll('div',attrs={'class':'dealers-view'})
for div in data:
    links = div.findAll('a')
    for a in links:
        print(a['href'])

Теперь, когда вы знакомы с этой концепцией, войдите в свою учетную запись. c веб-сайт (внесите очевидные изменения ... У меня нет вашего URL).

# webbot even works web pages which have dynamically changing id and classnames and has more methods and features than selenium or mechanize.

from webbot import Browser 
web = Browser()
web.go_to('google.com') 
web.click('Sign in')
web.type('mymail@gmail.com' , into='Email')
web.click('NEXT' , tag='span')
web.type('mypassword' , into='Password' , id='passwordFieldId') # specific selection
web.click('NEXT' , tag='span') # you are logged in ^_^

Наконец, получите данные CSV.

import pandas as pd
data = pd.read_csv('https://s3.amazonaws.com/nyc-tlc/trip+data/yellow_tripdata_2018-01.csv')
data

Имейте в виду Есть много других способов сделать то же самое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...