为了账号安全,请及时绑定邮箱和手机立即绑定

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

/ 猿问

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

守着一只汪 2019-09-02 09:05:33

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


查看完整描述

3 回答

?
扬帆大鱼

提取所有链接应该用循环:

1234urls = driver.find_elements_by_xpath("//a") for url in urls:    print(url.get_attribute("href"))

如果get_attribute方法报错应该是没有找到a标签对象,如果确定是有的话,可能是页面加载比较慢还没加载出来,selenium默认是不会等待对象出现的,需要在找对象前加一些等待时间;另外如果页面上有iframe的话需要先切换进去才能找到里面的对象。


查看完整回答
反对 回复 2019-09-07
?
慕莱坞7535251

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

查看完整回答
反对 回复 2019-09-07
?
四季花海

调用js方法
execute_script(script, *args)
在当前窗口/框架 同步执行javaScript
脚本:JavaScript的执行。
*参数:适用任何JavaScript脚本。
使用:
driver.execute_script(‘document.title’)
使快播登陆用户名输入框标红显示:
#coding=utf-8
from selenium import webdriver
import time
driver = 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\";"
#调用js
driver.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_name
q.style.border=\"1px solid red\
元素q的样式,边框为1个像素红色



查看完整回答
反对 回复 2019-09-07

添加回答

回复

举报

0/150
提交
取消
意见反馈 邀请有奖 帮助中心 APP下载
官方微信