2017-08-27 46 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? –