2017-06-01 80 views
0

我在抓取新聞網站以提取所有鏈接,包括新聞網站中典型的存檔鏈接。該網站here有一個加載更多網站文章的按鈕View More Stories。現在下面從網站中提取網址,包括存檔鏈接

def find_urls(): 
start_url = "e.vnexpress.net/news/business" 
r = requests.get("http://" + start_url) 
data = r.text 
soup = BeautifulSoup(data, "html.parser") 
links = soup.findAll('a') 
url_list = [] 
for url in links: 
    all_link = url.get('href') 
    if all_link.startswith('http://e.vnexpress.net/news/business'): 
     url_list.append(all_link) 
return set(url_list) 

成功後,該代碼加載不少URL,但我怎麼加載更多這裏是按鈕

<a href="javascript:void(0)" id="vnexpress_folder_load_more" data-page="2" 
          data-cate="1003895"> 
          View more stories 
         </a> 

的片斷有人能幫助我。謝謝。

+1

加載更多故事來自'發佈'請求。因此,首先建立下一頁網址,然後執行「發佈」請求,這是您的下一頁網址http://e.vnexpress.net/news/business?cate_id=1003895&page=2。你需要傳遞2個參數'cate_id'和'page' –

+0

@akashkarothiya你能給我更多的解釋嗎?問候! – Jeremiah

回答

1

您可以使用像硒這樣的瀏覽器來點擊按鈕,直到按鈕消失或禁用。最後,你可以一口氣用美麗的手筆刮擦整個頁面。

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 

#initializing browser 
driver = webdriver.Firefox() 
driver.set_window_size(1120, 550) 

driver.get("http://e.vnexpress.net/news/news") 

# run this till button is present 
elem = driver.find_element_by_id('vnexpress_folder_load_more')) 
elem.click() 
+0

是的,這件作品很棒。但是我怎麼能讓它運行幾次呢?我發現它只有一個。我試着從文檔中找到有關硒的東西,但找不到相關的東西。 – Jeremiah

+0

@Jeremiah你能解釋一下你想要它運行嗎? – mrid

+0

從我所瞭解的'elem.click()'加載下一頁。我希望它能夠實現的是繼續反覆運行,直到我指定了一個條件以便在爬取大約100個url之後停止。 – Jeremiah