python beautifulsoup iframe文档html提取

AJW*_*AJW 9 html python iframe beautifulsoup

我正在尝试学习一些美味的汤,并从一些iFrame中获取一些HTML数据 - 但到目前为止我还没有取得很大成功.

因此,解析iFrame本身似乎不是BS4的问题,但我似乎无法从中获取嵌入式内容 - 无论我做什么.

例如,考虑下面的iFrame(这是我在chrome开发人员工具上看到的):

<iframe frameborder="0" marginwidth="0" marginheight="0" scrolling="NO"
src="http://www.engineeringmaterials.com/boron/728x90.html "width="728" height="90">
#document <html>....</html></iframe>
Run Code Online (Sandbox Code Playgroud)

在哪里,<html>...</html>是我有兴趣提取的内容.

但是,当我使用以下BS4代码时:

iFrames=[] # qucik bs4 example
for iframe in soup("iframe"):
    iFrames.append(soup.iframe.extract())
Run Code Online (Sandbox Code Playgroud)

我明白了:

<iframe frameborder="0" marginwidth="0" marginheight="0" scrolling="NO" src="http://www.engineeringmaterials.com/boron/728x90.html" width="728" height="90">
Run Code Online (Sandbox Code Playgroud)

换句话说,我得到的iFrame没有文档<html>...</html>.

我尝试过以下方面:

iFrames=[] # qucik bs4 example
iframexx = soup.find_all('iframe')
for iframe in iframexx:
    print iframe.find_all('html')
Run Code Online (Sandbox Code Playgroud)

..但这似乎不起作用..

所以,我想我的问题是,如何<html>...</html>从iFrame元素中可靠地提取这些文档对象.

Mar*_*ers 14

浏览器在单独的请求中加载iframe内容.你必须这样做:

for iframe in iframexx:
    response = urllib2.urlopen(iframe.attrs['src'])
    iframe_soup = BeautifulSoup(response)
Run Code Online (Sandbox Code Playgroud)

请记住:BeautifulSoup不是浏览器; 它也不会为您获取图像,CSS和JavaScript资源.