Python 检查链接中每个元素的超文本引用,并与adserver IP进行比较

Python 检查链接中每个元素的超文本引用,并与adserver IP进行比较,python,selenium,Python,Selenium,我正在制作一个广告屏蔽程序。这是我的代码: from selenium import webdriver url = input('Enter URL to detect ads from: ') browser = webdriver.Chrome() browser.get('http://'+url) all_iframes = browser.find_elements_by_tag_name("iframe") if len(all_iframes) > 0: pr

我正在制作一个广告屏蔽程序。这是我的代码:

from selenium import webdriver

url = input('Enter URL to detect ads from: ')

browser = webdriver.Chrome()
browser.get('http://'+url)

all_iframes = browser.find_elements_by_tag_name("iframe")
if len(all_iframes) > 0:
    print("" + "Ads Found\n")
    browser.execute_script("""
    var elems = document.getElementsByTagName("iframe"); 
    for(var i = 0, max = elems.length; i < max; i++)
         {
             elems[i].hidden=true;
         }
                      """)
    print('Total Ads: ' + str(len(all_iframes)))
else:
    print('No Ads found')
从selenium导入webdriver
url=input('输入从中检测广告的url:')
browser=webdriver.Chrome()
browser.get('http://'+url)
所有iframes=浏览器。通过标签名称(“iframe”)查找元素
如果len(所有帧)>0:
打印(“+”找到的广告\n”)
浏览器。执行_脚本(“”)
var elems=document.getElementsByTagName(“iframe”);
对于(变量i=0,max=elems.length;i

我的问题是,有没有办法检查iFrame的超文本引用,并将其与第页上的adserver IP进行比较?

您可以尝试以下解决方案,但我不确定这是否涵盖所有情况(我暂时无法检查):


您可以尝试以下解决方案,但我不确定这是否涵盖所有情况(目前我无法检查):


很抱歉,我不太精通Python语法,但可以从java的角度进行回答,您可以将其扩展到测试中

访问ipAdd站点,获取页面源

driver.get("http://pgl.yoyo.org/as/serverlist.php?hostformat=adblockplus");
String pageSrc=driver.getpagesource(); //Get page source
List<String> ipList=pageSrc.split("\\||*\\^");Split based on start and end character
driver.get(“http://pgl.yoyo.org/as/serverlist.php?hostformat=adblockplus");
字符串pageSrc=driver.getpagesource()//获取页面源
List ipList=pageSrc.split(“\\\\\\\\\\”);基于开始字符和结束字符的拆分
在测试网站上,获取iframe webelements并与ipAdd列表进行比较

  List<Webelement> all_iframes = driver.findElements(by.tag_name("iframe"));//Creates list of iframe webelements
 for(Webelement iframe:all_iframes){
    if(//Compare iframe.getAttribute("name") with ipaddress list){  //check whether ipaddress list contains frame name
      SOPL("Found");
    }
  }
列出所有iframes=driver.findElements(by.tag\u name(“iframe”)//创建iframe webelements的列表
for(Webelement iframe:all_iframe){
如果(//将iframe.getAttribute(“名称”)与ipaddress列表进行比较){//检查ipaddress列表是否包含帧名称
SOPL(“发现”);
}
}

很抱歉,我不太熟悉Python语法,但我可以从java的角度回答问题,您可以将其扩展到测试中

访问ipAdd站点,获取页面源

driver.get("http://pgl.yoyo.org/as/serverlist.php?hostformat=adblockplus");
String pageSrc=driver.getpagesource(); //Get page source
List<String> ipList=pageSrc.split("\\||*\\^");Split based on start and end character
driver.get(“http://pgl.yoyo.org/as/serverlist.php?hostformat=adblockplus");
字符串pageSrc=driver.getpagesource()//获取页面源
List ipList=pageSrc.split(“\\\\\\\\\\”);基于开始字符和结束字符的拆分
在测试网站上,获取iframe webelements并与ipAdd列表进行比较

  List<Webelement> all_iframes = driver.findElements(by.tag_name("iframe"));//Creates list of iframe webelements
 for(Webelement iframe:all_iframes){
    if(//Compare iframe.getAttribute("name") with ipaddress list){  //check whether ipaddress list contains frame name
      SOPL("Found");
    }
  }
列出所有iframes=driver.findElements(by.tag\u name(“iframe”)//创建iframe webelements的列表
for(Webelement iframe:all_iframe){
如果(//将iframe.getAttribute(“名称”)与ipaddress列表进行比较){//检查ipaddress列表是否包含帧名称
SOPL(“发现”);
}
}

对不起,您是否试图将iframe名称与另一页上的ip地址进行比较?或者尝试将每个iframe中的某些元素与其他页面进行比较?抱歉,我正在将iframe名称与页面上列出的广告服务器进行比较。我现在将编辑我的问题编辑链接以显示IP地址,您是否尝试将iframe名称与另一页上的IP地址进行比较?或者尝试将每个iframe中的某些元素与其他页面进行比较?抱歉,我正在将iframe名称与页面上列出的广告服务器进行比较。我现在将编辑我的问题编辑链接以显示IP地址谢谢你的回复,但是你能告诉我在我的代码中放在哪里吗?很抱歉,答案更新了。我想这应该是完整的代码。如果有任何问题,请告诉我,作为您的回复,但您能告诉我在我的代码中放在哪里吗?很抱歉,答案更新了。我想这应该是完整的代码。如有任何问题,请告知我,并不是每个
iframe
都有属性
name
。另外,
name
是一个简单的字符串,如
“main_frame”
,而
IPv4
是一个4字节地址的数字序列,例如
192.168.1.1
-比较它们没有意义请注意,并非每个
iframe
都有属性
name
。另外,
name
是一个简单的字符串,如
“main_frame”
,而
IPv4
是一个4字节地址的数字序列,例如
192.168.1.1
——比较它们没有意义