如何用BeautifulSoup刮掉Instagram

时间:2013-08-08 15:49:30

标签: python web-scraping beautifulsoup instagram python-requests

我想从公开的Instagram帐户中删除图片。我对bs4非常熟悉所以我从那开始。使用Chrome上的元素检查器,我注意到这些图片是在一个无序的列表中,而且我有一个类“照片”,所以我想,到底是什么 - 用findAll抓不到那么难,对吧?

错误:它没有返回任何内容(下面的代码),我很快就注意到元素检查器中显示的代码和我从请求中提取的代码不一样 AKA没有无序列表我从请求中提取的代码。

知道如何获取元素检查器中显示的代码吗?

只是为了记录,这是我开始的代码,由于无序列表不存在而无效:

from bs4 import BeautifulSoup
import requests
import re

r = requests.get('http://instagram.com/umnpics/')
soup = BeautifulSoup(r.text)
for x in soup.findAll('li', {'class':'photo'}):
    print x

感谢您的帮助。

1 个答案:

答案 0 :(得分:11)

如果您查看该页面的源代码,您会看到一些javascript会生成该网页。您在元素浏览器中看到的是脚本运行后的网页,而beautifulsoup只获取html文件。为了解析呈现的网页,您需要使用Selenium之类的内容为您呈现网页。

因此,例如,这就是Selenium的外观:

from bs4 import BeautifulSoup
import selenium.webdriver as webdriver

url = 'http://instagram.com/umnpics/'
driver = webdriver.Firefox()
driver.get(url)

soup = BeautifulSoup(driver.page_source)

for x in soup.findAll('li', {'class':'photo'}):
    print x

现在汤应该是你所期待的。