一天中的好时光,SO社区。这是我最近遇到的问题:
我在主页上获得了这个HTML源代码:
{{1}}
我已经阅读了许多关于解析iframe的材料,但他们所做的只是从iframe获取src属性并在之后发出另一个请求。我不能在这里做同样的技巧,因为src属性是空白的,网络逻辑位于下面。
我使用的是Python 3.5,bs4和请求。
页面源代码 - 框架源代码 - http://collabedit.com/kqp88
如果我分享原始网页,我不知道是否可以...
答案 0 :(得分:0)
iframe 有一个id,所以只需使用:
h= """<div id="contents_layout">
<iframe name="contentsFrame" id="contentsFrameID" src=""
width="100%" height="100%" scrolling="no" frameborder="0"
marginheight="0" marginwidth="0"></iframe>
</div>
"""
from bs4 import BeautifulSoup
soup = BeautifulSoup(h)
iframe = soup.select_one("#contentsFrameID")
会给你:
<iframe frameborder="0" height="100%" id="contentsFrameID" marginheight="0" marginwidth="0" name="contentsFrame" scrolling="no" src="" width="100%"></iframe>
您还可以使用空 src 属性:
ifr = soup.select_one("iframe[src=""]")
使用名称:
ifr = soup.select_one("iframe[name=contentsFrame]")
在您正在抓取的实际网站中,contentsFrameID
内的内容是动态创建的,因此您需要selenium之类的内容,以下是动态创建的示例:
from selenium import webdriver
from bs4 import BeautifulSoup
dr = webdriver.PhantomJS()
dr.get("http://encykorea.aks.ac.kr/Contents/Index?contents_id=E0000089")
soup = BeautifulSoup(dr.page_source)
print(soup.select_one("#contentFrameForm")