python beautifulsoup iframe документ html экстракт

Я пытаюсь узнать немного красивого супа и получить некоторые данные html из некоторых iFrames - но до сих пор я не был очень успешным.

Итак, разбор 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>

здесь <html>...</html> содержание меня интересует экстрагирование.

однако, когда я использую следующий код BS4:

iFrames=[] # qucik bs4 example
for iframe in soup("iframe"):
    iFrames.append(soup.iframe.extract())

Я:

<iframe frameborder="0" marginwidth="0" marginheight="0" scrolling="NO" src="http://www.engineeringmaterials.com/boron/728x90.html" width="728" height="90">

другими словами, я получаю iFrames без документа <html>...</html> внутри них.

я попробовал что-то вроде:

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

.. но это, похоже, не работает..

Итак, я думаю, мой вопрос в том, как надежно извлечь эти объекты документа <html>...</html> из элементов iFrame.

1 ответов


браузеры загружают содержимое iframe в отдельном запросе. Вам придется сделать то же самое:

for iframe in iframexx:
    response = urllib2.urlopen(iframe.attrs['src'])
    iframe_soup = BeautifulSoup(response)

помните: BeautifulSoup не является браузером; он не будет получать изображения, CSS и JavaScript-ресурсы для вас.