java获取iframe,Scrapy+Selenium 获取iframe下的document

需求:获取iframe h3下的标题,img的源,及a标签的落地页

c4947f94a8b4d4956260e7e484a658c2.png

需要先熟悉Selenium的同学:点击学习

使用xpath获取iframe下的内容为空,如图

可采用execute_script运行js获取,获取iframe下的document使用[iframe标签].contentWindow.document

# 当前iframe有多个,而且id是动态的。首先找到id

temp_iframe_id = box.xpath('.//td[3]/div/div/div/iframe/@id').extract()[0]

# 广告落地页 重试三次 因为是动态渲染,可能存在未渲染结束问题

for i in range(0, 3):

try:

item['landing_page'] = self.browser.execute_script(

'return document.getElementById("' + temp_iframe_id + '").contentWindow.document.getElementsByTagName("a")[0].href')

break

except JavascriptException as e:

logging.info("没找到落地页")

time.sleep(1)

# 创意名称

for i in range(0, 3):

try:

item['creative_title'] = self.browser.execute_script(

'return document.getElementById("' + temp_iframe_id + '").contentWindow.document.getElementsByTagName("h3")[0].innerText')

break

except JavascriptException as e:

logging.info("没找到标题")

time.sleep(1)

# 创意图片链接 思路:先找到所有的img标签,再遍历拿到src数组返回

for i in range(0, 3):

try:

item['images'] = self.browser.execute_script(

'var images = document.getElementById("' + temp_iframe_id

+ '").contentWindow.document.getElementsByTagName("img");'

'var imgURLs=new Array(images.length);'

'for(var i = 0;i

'return imgURLs;')

break

except JavascriptException as e:

logging.info("没找到创意链接")

time.sleep(1)

即可获得结果。

{

"creative_title": "手机产生大量缓存垃圾,影响手机速度,请立即清理",

"images": ["http://static.wkanx.com/w002/M00/04/2C/CgIXGF3vetuAFFfMAABUij8AZa024.jpeg?t=8d5bfab5c8eac5c980c360add3384f37&w=648&h=360"],

"landing_page": "http://static.wkanx.com/w002/M00/04/6F/CgIXgV4DLW6AMV2cARFMEYnYn9A511.apk?t=7e12bede36f56c60e2b00329f6faea68"

}

对js不熟悉的同学提前在console(控制台)试了能用再拉过来哦~

💡 更多好文欢迎关注我的公众号~

wx_subscription.jpg

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值