2016-02-17 62 views
0

這是相當簡單的東西在這裏......所以我目前正在試用python,而我的經驗很少......我想創建一個圖像刮板什麼去頁面下載圖像點擊鏈接(下一頁)並下載其他圖像等(作爲源使用類似於9gag的網站)。 現在我的腳本只能打印圖像的URL和下一個鏈接的URL,所以我無法弄清楚如何讓我的機器人點擊鏈接和下載下一個圖像,並無限地做到這一點(直到條件遇到/停止等)...簡單的Python圖像刮板腳本

PS IM使用beautifulsoup4(我覺得LOL)

由於提前, ZIL

這裏的腳本看起來像現在,我有點幾個腳本組合成一個東西,所以腳本看起來非常潔淨。 ..

import requests 
from bs4 import BeautifulSoup 
import urllib 

def trade_spider(max_pages): 
    page = 1 
    while page <= max_pages: 
     url2 = 'http://linksmiau.net/linksmi_paveiksliukai/rimtas_rudeninis_ispejimas_merginoms/1819/' 
     url = url2 
     source_code = requests.get(url) 
     plain_text = source_code.text 
     soup = BeautifulSoup(plain_text, "html.parser") 

     for img in soup.findAll('img', {'class': 'img'}): 
      temp = img.get('src') 
      if temp[:1]=="/": 
       image = "http://linksmiau.net" + temp 
      else: 
       image = temp 

     print(image) 


     for lnk in soup.findAll('div', {'id': 'arrow_right'}): 
       nextlink = lnk.get('onclick') 
       link = nextlink.replace("window.location = '", "") 
       lastlink = "http://linksmiau.net" + link 
       page += 1 
     print(lastlink) 
     url2 == lastlink 

trade_spider(3) 

回答

1

從「點擊」鏈接的角度來看,我不會想到它,因爲你正在編寫腳本,而不是使用瀏覽器。

你需要的是找出4件事情:

  1. 獲得一個網址,你怎麼弄的HTML背後與beautifulSoup解析 - 這聽起來像是你有這部分已經下降。 :)

  2. 鑑於許多不同的htmls,你如何識別你想下載的圖像和「下一個」鏈接。 - 再次,beautifulSoup。

  3. 給定一個圖像的URL(可在<img>標籤的「src」屬性中找到),如何將圖像保存到磁盤。 答案可以在StackOverflow的問題,可以找到這樣的: Downloading a picture via urllib and python

  4. 鑑於其「下一個」鏈接,你如何「點擊」的網址 - 再次,你沒有真正「點擊」你剛纔從這個新的鏈接下載HTML,並再次啓動整個週期(分析它,識別圖像和「下一個」鏈接」,下載圖像,獲取隱藏HTML‘下一個’鏈接)。

一旦你已經解決了這個問題,剩下的就是把所有東西都集中在一個很好的腳本中,然後就完成了。

祝你好運:)

+0

嘿嘿,謝謝對於你的回答,我認爲我可以確定你上面提到的前3分,我確定第四步是這裏的問題...我想我不能自己排除它,或者至少它會花費太多時間...我已經用我當前的腳本更新了原始文章,如果您有時間,您可以告訴我什麼是錯的... –

+0

爲什麼不在下一個鏈接上使用「requests.get(url)」? 如果您只是將while循環之外的第一行移到while循環之外,可能會起作用(現在,while循環的每次迭代都會使您解析相同的URL)。 – DougieHauser

1

它是固定的。 DougieHauser是對的,我想爲此握手。

我剛搬到URL2行while循環之外,它的似乎工作就好了,現在我只需要弄清楚如何使這個腳本保存圖片在我的硬盤LOL

def trade_spider(max_pages): 
    url2 = 'http://linksmiau.net/linksmi_paveiksliukai/rimtas_rudeninis_ispejimas_merginoms/1819/' 
    page = 1 
    while page <= max_pages: 
#url2 = 'http://linksmiau.net/linksmi_paveiksliukai/rimtas_rudeninis_ispejimas_merginoms/1819/' 
     url = url2 
     source_code = requests.get(url) 
     plain_text = source_code.text 
     soup = BeautifulSoup(plain_text, "html.parser") 
     #current_bet_id = "event_odd_id_31362885" #+ str(5) 

     #for link in soup.findAll('span', {'class': 'game'}, itemprop="name"):