python - 如何使用 BeautifulSoup 抓取 Instagram

标签 python web-scraping beautifulsoup instagram python-requests

我想从公共(public) Instagram 帐户中抓取图片。我对 bs4 非常熟悉,所以我从它开始。使用 Chrome 上的元素检查器,我注意到图片在无序列表中,并且 li 有类“照片”,所以我想,这到底是怎么回事——用 findAll 抓取不会那么难,对吧?

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

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

仅作记录,这是我开始的代码,它不起作用,因为没有无序列表:

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

感谢您的帮助。

最佳答案

如果您查看该页面的源代码,您会发现一些 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

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

关于python - 如何使用 BeautifulSoup 抓取 Instagram,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18130499/

相关文章:

Python - 阅读时忽略每行的第一个字符(制表符)

python - 读取 Pandas 的季度数据

python - 如何从抓取的链接 [Python] 下载 PDF?

python - 使用 Python 中的 Beautiful Soup 获取 <div> 类 ="some_class"> 标签内 <p> 标签的内容

python - 对缺少 </td> 标签的 HTML 表格使用 Beautiful Soup

python - Matplotlib y 轴值未排序

python - Webapp2重定向方法

用于创建包含 100 多个视频的 YouTube 播放列表的视频标题列表的 Python 脚本

python - BeautifulSoup 元素输出到列表

python - 在 Python 中使用 BeautifulSoup 获取直接父标签