2017-08-27 48 views
1

刮Instagram的我想要得到的URL列表從該網頁的帖子,並從他們每個人的得到想要的數據...從BeautifulSoup

import requests 
from bs4 import BeautifulSoup  
import selenium.webdriver as webdriver  
url = 'https://www.instagram.com/louisvuitton/' 
driver = webdriver.Firefox() 
driver.get(url)  
soup = BeautifulSoup(driver.page_source, 'lxml') 
data1 = soup.find_all('div', {'class': '_cmdpi'}) 
list1 =[] 
for links in data1: 
    list1.append(links.a['href']) 
print list1 

但是爲什麼這個只得到第一個鏈接,而不是清單?

回答

1

這是因爲有多個鏈接,但只有一個divclass="+cmdpi" ...所以data1是由只有一個元素組成的列表。嘗試下面的代碼,以獲得所需的參考而不使用bs4

url = 'https://www.instagram.com/louisvuitton/' 
driver = webdriver.Firefox() 
driver.get(url) 
links = [a.get_attribute('href') for a in driver.find_elements_by_css_selector('div._cmdpi a')] 
print links 
+0

完美!任何解決方案獲得超過12個結果?因爲加載更多按鈕不會重定向到另一個頁面? –

+0

您可以點擊'加載更多'按鈕一次,然後[向下滾動頁面](https://stackoverflow.com/questions/20986631/how-can-i-scroll-a-web-page-using-selenium-webdriver- in-python)在一個'while'或'for'循環之前抓取鏈接 – Andersson

+0

嗨....我成功地獲得鏈接列表。並且還從帖子後面刮掉了想要的數據。但是因爲它們全部使用javascript I必須繼續使用硒,這意味着它將不斷打開新的Web瀏覽器。我想保留1000多個鏈接的循環。我看不到那個工作?任何sugesstions? –