2016-08-24 24 views
-1

我使用Python的請求庫打開了一個網頁('http://example.com/protected_page.php')。使用Python打開網頁後下載文件

from requests import session 

payload = { 
    'action': 'login', 
    'username': USERNAME, 
    'password': PASSWORD 
} 

with session() as c: 
    c.post('http://example.com/login.php', data=payload) 
    response = c.get('http://example.com/protected_page.php') 

現在,該頁面上有大約15個鏈接用於下載文件。

我希望只從2個鏈接下載文件(比如linkA和linkB)。

如何在我的代碼中指定此值,以便在運行我的代碼時下載2個文件。

+0

哪裏是你的代碼來獲取頁面?沒有看到你正試圖刮你的問題的頁面是無法回答的 –

+0

爲什麼你需要代碼?這只是打開需要的頁面。 – Aditya

+0

我添加了相關代碼 – Aditya

回答

0

您能否提供關於這些鏈接的更多信息?

這些linkA和linkB總是一樣的鏈接嗎? 如果是的話,那麼你可以使用:

r = requests.get(linkA, stream=True) 

如果網址鏈接是不一樣的時候,那麼也許你可以找到另一種方式,使用鏈接的順序可以是,例如,如果林卡和LINKB始終是頁面上的第一個和第二個鏈接等。

另一種方法是使用頁面中的任何唯一類名稱或ID。但是如果你能提供更多的信息會更好。

+0

實際上,該網頁有15個不同的標題(例如「H1」,「H2」,...,「H15」)。所以,標題名稱每天都是一樣的。但是,當我們點擊任何標題名稱(比如「H1」)時,鏈接名稱(以及由此下載的文件)會發生變化。 – Aditya

+0

所以,我需要一些python代碼,我可以提到2個標題,我每天點擊下載文件 – Aditya

+0

這是一個很好的開始。檢查頁面,看看標題是否與鏈接以某種方式鏈接。然後,您可以使用另一個類似BeatifulSoup4的庫來獲取這些鏈接並將它們傳遞給請求。 – efialtisgr

0

事實上你所提到的更精確地稱爲網絡報廢,其中一個可以刮從給定網站的一些具體內容:

網頁抓取是從提取 信息的計算機軟件技術網站。該技術主要關注網絡中非結構化數據(HTML格式)的 結構化數據(數據庫或電子表格)。

不知道HTML語義,它是不可能給你一個代碼,你正在尋找什麼。但在這裏,我可以建議你使用哪種方式,你可以從你的網站進行網頁抓取。

1.非編程方式:

對於那些你,誰需要一個非編程的方式來提取 信息出來的網頁,你也可以看看import.io。它提供了一個GUI驅動的界面來執行所有基本的Web抓取操作。

2.編程方式:

您可能會發現許多圖書館使用Python來執行一個功能。因此,有必要找到最好的使用庫。我更喜歡BeautifulSoup,因爲它很容易和直觀。確切地說,可以使用刮數據兩個Python模塊:

  • 的urllib2:它是一個Python模塊,其可用於獲取的URL。它定義了用於幫助URL操作的函數和類(基本的 和摘要式驗證,重定向,cookie等)。有關更多 的詳細信息,請參閱文檔頁面。


  • BeautifulSoup:這是從網頁拉出信息 一個不可思議的工具。您可以使用它來提取表格,列表,段落和 ,您還可以將過濾器從網頁中提取信息。最新版本爲BeautifulSoup 4.您可以在文檔頁面的安裝說明中查看 。

BeautifulSoup沒有爲我們抓取的網頁。這就是爲什麼,需要結合使用urllib2與BeautifulSoup庫。

除了BeatifulSoup外,Python還有其他幾種HTML抓取選項。下面是一些人: