Firefox调用iframe为空值的问题解决

本文探讨了在Internet Explorer和Firefox浏览器中使用iframe加载页面时出现的不同行为,并提供了两种解决方案来确保跨浏览器的一致性。

例如: <iframe style="display:none;" name="frameName" id="TaLoader" onload="getTa()"></iframe> function getTa(){ var d=document.getElementById("TaLoader").document; ... } 用ie可以得到值,用Firefox 则会为空。 解决方案一: var d=document.getElementById("dataLoader").contentWindow.document; 解决方案二: window.frames["frameName"].document; 即可用name的属性来调用。

from selenium import webdriver import pandas as pd from itertools import zip_longest import time import random import os os.chdir(r'E:\PythonProject\Spider\csdn') def crawler_paper(): opt=webdriver.Firefox() opt.add_experimental_option('excludeSwitches', ['enable-automation']) # Firefox_PATH =r"E:\PythonProject\.venv\Scripts\geckodriver.exe" driver=webdriver.Firefox(options=opt) driver.get('https://www.cnki.net/') time.sleep(2) search=driver.find_element_by_id('txt_SearchText') search.send_keys('超市 营销策略') submit=driver.find_element_by_class_name('search-btn') submit.click() time.sleep(3) df=[] driver.switch_to.frame('iframeResult') for page in range(1,50): try: driver.execute_script('window.scrollTo(0,document.body.scrollHeight)') paper_name=driver.find_elements_by_css_selector('a.fz14') author=driver.find_elements_by_css_selector('td.author_flag') source=driver.find_elements_by_css_selector('td.author_flag+td') datetime=driver.find_elements_by_css_selector('td.author_flag+td+td') database=driver.find_elements_by_css_selector('td.author_flag+td+td+td') download=driver.find_elements_by_css_selector('span.downloadCount') for k,v,m,n,q,w in zip_longest(paper_name,author,source,datetime,database,download,fillvalue=0): if w==0: df.append([k.text,v.text,m.text,n.text,q.text,w]) else: df.append([k.text,v.text,m.text,n.text,q.text,w.text]) print('第{}页爬取完毕'.format(page)) driver.find_element_by_link_text('下一页').click() time.sleep(random.randint(2,5)) except: print('未爬到数据') time.sleep(10) return df def save_data(data:list): inf=pd.DataFrame(data,columns=['论文名','作者','来源','发表日期','数据库','下载次数']) inf.to_csv('paper_information.csv',index=False,encoding='gb18030') if __name__=='__main__': data=crawler_paper() save_data(data)
最新发布
08-09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值