2017-12-18 21 views
0

동적 URL로 CSV 파일을 다운로드하는 웹 크롤러를 작성하려고합니다. 내 크롬 브라우저에이 URL을 넣어하지만 난 그냥 바로 다운로드 시작 페이지가 변경되지 않습니다selenium & phantomjs의 동적 URL에서 파일 다운로드

http://aaa/bbb.mcv/Download?path=xxxx.csv처럼

URL은.

개발 화면에서 어떤 요청도 찾을 수 없습니다.

나는

  1. lib이 요청에 의해 파일을 얻을 수

    driver.get(url)

  2. 시도 셀레늄에 URL을 넣어 파일을 얻는 방법을 시도했습니다

    requests.get(url)

둘 다 작동하지 않았습니다 ...

어떤 조언이 필요합니까? 두 가지 방법 중

출력 :

  1. 내가 스크린 샷을 얻기 위해 노력하고 페이지를 변경하지 않는 것 같다. (크롬처럼)

  2. 내가 얻은 데이터를 인쇄하려고하면 html 파일처럼 보입니다.
    그런 다음 브라우저에서 열면 로그인 페이지가됩니다. 모든 사람의 도움을

+0

당신은 어떤 오류가 않았다 내 코드인가? –

+0

@Harry_pb 안녕하세요! 출력을 업데이트합니다! –

+0

'r = requests.get()'이 모든 파일을'r.content' 변수에 넣어 주어야합니다. 그렇지 않으면'r.content'에 에러 메시지가 나타날 수 있습니다. – furas

답변

0

감사합니다!
드디어 문제가 발견되었습니다.
셀레늄으로 웹 사이트에 로그인하고 파일 다운로드 요청을 사용합니다.
Selenium에는 인증 정보가 없습니다!

그래서 내 솔루션은 먼저 셀레늄으로 쿠키를받습니다.
그런 다음 요청에 보내십시오! 여기

cookies = driver.get_cookies() #selenium web driver 

s = requests.Session() 
for cookie in cookies: 
    s.cookies.set(cookie['name'], cookie['value']) 
response = s.get(url) 
0

import requests 
 

 
url = '...' 
 
save_location = '...' 
 

 
session = requests.session() 
 

 
response = session.get(url) 
 
with open(save_location, 'wb') as t: 
 
    for chunk in response.iter_content(1024): 
 
     t.write(chunk)

+0

답변 해 주셔서 감사합니다. 하지만 HTML 파일이 로그인 페이지처럼 보일뿐입니다. –

+0

사용자와'requests.get ('https://api.github.com/user', auth = ('user', 'pass'))'를 시도하고 사용자 이름과 암호로 전달하십시오. 웹 페이지에 대한 액세스 권한이 있다고 가정합니다. – yvesva

+0

난 그 문제를 알아 냈어! 내 요청으로 쿠키를 보내야합니다! –