2017-12-18 155 views
0

我嘗試編寫一個通過動態url下載CSV文件的網絡爬蟲。通過selenium&phantomjs從動態url下載文件

URL是像http://aaa/bbb.mcv/Download?path=xxxx.csv

我把這個鏈接到我的Chrome瀏覽器,但我只是立即開始下載頁面將不會改變。

我什至不能在開發屏幕上找到任何請求。

我試過的方式來獲取文件

  1. 把網址中的硒

    driver.get(url)

  2. 嘗試獲得通過的請求文件LIB

    requests.get(url)

兩者都沒有工作...

有什麼建議嗎?

兩種方式輸出:

  1. 我試圖讓屏幕截圖,似乎不改變頁面。 (就像在鉻)

  2. 我嘗試打印出我得到的數據,它看起來像html文件。
    然後在瀏覽器中打開它是一個登錄頁面。

+0

你得到任何錯誤? –

+0

@Harry_pb嗨!我只是更新輸出! –

+0

'r = requests.get()'應該給你變量'r.content'中的所有文件,或者你可能會在'r.content'中得到錯誤信息 - 所以打印它看看你得到了什麼。 – furas

回答

0

感謝大家的幫助!
我終於發現問題是...
我通過硒登錄網站,我使用請求下載文件。
Selenium沒有任何驗證信息!

所以我的解決方案是先由selenium獲取cookie。
然後將它發送到請求!

這裏是我的代碼

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

我剛纔發現了這個問題!我需要根據我的請求發送餅乾! –