猿问
下载APP

请问该怎么用python selenium提取网页中的所有<a>标签中的超级链接地址?

用python selenium提取网页中的所有<a>标签中的超级链接地址


守着一只汪
浏览 798回答 3
3回答

扬帆大鱼

提取所有链接应该用循环:1234urls&nbsp;=&nbsp;driver.find_elements_by_xpath("//a")&nbsp;for&nbsp;url&nbsp;in&nbsp;urls:&nbsp;&nbsp;&nbsp;&nbsp;print(url.get_attribute("href"))如果get_attribute方法报错应该是没有找到a标签对象,如果确定是有的话,可能是页面加载比较慢还没加载出来,selenium默认是不会等待对象出现的,需要在找对象前加一些等待时间;另外如果页面上有iframe的话需要先切换进去才能找到里面的对象。

慕莱坞7535251

解决办法:使用selenium.webdriver.remote.webelement.WebElement提供的get_attribute方法。通过get_attribute拿到该a标签的各种属性,通过判断找到符合要求的元素进行点击。get_attribute("href") 得到a标签对应的目标页面的URL,对URL进行判断就可以了解到该页面是否站内页面。我们可以知道,如果是站内页面的话这个属性一般会是一个相对路径,或者包含了本站域名,但如果是站外页面的话,那它一定是包含了“http”的一个url。get_attribute("target")如果target不是"_blank"的话,可以判断该页面是在本窗口跳转的

四季花海

调用js方法execute_script(script, *args)在当前窗口/框架 同步执行javaScript脚本:JavaScript的执行。*参数:适用任何JavaScript脚本。使用:driver.execute_script(‘document.title’)使快播登陆用户名输入框标红显示:#coding=utf-8from selenium import webdriverimport timedriver = webdriver.Firefox()driver.get("http://passport.kuaibo.com/login/?referrer=http%3A%2F%2Fvod.kuaibo.com%2F%3Ft%3Dhome")#给用户名的输入框标红js="var q=document.getElementById(\"user_name\");q.style.border=\"1px solid red\";"#调用jsdriver.execute_script(js)time.sleep(3)driver.find_element_by_id("user_name").send_keys("username")driver.find_element_by_id("user_pwd").send_keys("password")driver.find_element_by_id("dl_an_submit").click()time.sleep(3)driver.quit()js解释:q=document.getElementById(\"user_name\")元素q的id 为user_nameq.style.border=\"1px solid red\元素q的样式,边框为1个像素红色
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答