Python中是否有网页分析工具可以提取所有元素,方便Selenium定位?
分析 www.tradingview.com 一直找不到 sign in 的的 element,想请教下大家怎么分析网页?有没有好用的软件?
Python中是否有网页分析工具可以提取所有元素,方便Selenium定位?
当然有。除了直接用Selenium的find_element方法,你还可以用BeautifulSoup或lxml来解析Selenium获取的页面源码,这样提取和定位元素会更灵活。
比如,你可以先用Selenium拿到完整的页面HTML,然后用BeautifulSoup解析,它能提供非常强大的查找方法(像CSS选择器、复杂的嵌套查找),帮你理清页面结构。找到想要的元素后,再回到Selenium用XPath或CSS选择器去定位和操作。
下面是个简单的例子,展示了怎么结合使用:
from selenium import webdriver
from bs4 import BeautifulSoup
import time
# 启动浏览器
driver = webdriver.Chrome()
driver.get("https://example.com")
# 等待一下,确保页面加载完成
time.sleep(2)
# 获取页面源码并用BeautifulSoup解析
page_source = driver.page_source
soup = BeautifulSoup(page_source, 'html.parser')
# 用BeautifulSoup查找所有链接,并打印href
all_links = soup.find_all('a')
for link in all_links:
print(link.get('href'))
# 这里你可以分析链接特征,比如包含特定关键词的
# if 'target_keyword' in link.get('href', ''):
# # 构造对应的XPath或CSS Selector给Selenium用
# # 例如:driver.find_element(By.XPATH, f"//a[@href='{link.get('href')}']")
# 实际定位操作示例:用BeautifulSoup找到特定元素后,获取其属性来辅助Selenium定位
# 假设我们找到了一个具有独特id的div
target_div = soup.find('div', id='unique_id')
if target_div:
# 可以用XPath定位://div[@id='unique_id']
element = driver.find_element(By.XPATH, "//div[@id='unique_id']")
element.click()
driver.quit()
总结:用BeautifulSoup辅助分析页面结构,再回到Selenium操作。
想用 selenium 登陆这个网站,不想用 bs,有没有办法找到 sign 的 username 和 password 的输入项目
你是说这样?
这个找到了,不知道是怎么赚到登陆界面的,点击了,也没有发现如何才能找到 username 和 password 在哪里?
新手,实在抱歉。
点击了居然浏览器地址没有任何变化,而且看这个网站的登陆界面都是如何做到用户名和密码参数传递的呢?
有没有可视化的工具,比如我鼠标点到了那个地方,对应地方的代码就能高亮,这样比较好找?
firebug。
这个页面 sign in 没有直接写在 html 中,所以你找不到它。
它是通过 js 调用的,点击 sign in,并没有新的网络请求,所以 sign in 的 html 应该封装在了 js 文件中。
elem = driver.find_element_by_class_name(‘tv-header__device-signin js-header__signin’)
#elem_1 = driver.find_element_by_link_text(’#signin’)
print(“elem as follows:”, elem)
#print(elem_1)
elem_2 = driver.find_element(By.CLASS_NAME, ‘tv-unauth-header’)
print(“elem_2 as follows:”, elem_2)
elem_3 = driver.find_element(By.CLASS_NAME, ‘tv-unauth-header__text-input js-go-to-chart-field’)
print(“elem_3 as follows:”, elem_3)
找到了这几个靠近这个区域的,不过觉得不是 username 和 password 的输入哈
Chrome f12 的左上角,那里有个按钮,点一下就可以用鼠标选取元素定位了
谢谢指点,那这个需要怎么办? js 也在这个网页里面吧
剩下的你自己研究吧,应该没有问题的。
你的问题让我想起了工作的第一年,一些基础问题原理还没有搞明白。
那时 V2EX 刚成立不久,这里提问被嘲笑过。所以我才来回答。
在这里里面的话,是不是要
driver.get("https://www.tradingview.com/static/bundles/signin-dialog.9e33db5940f5894253d9.js ")
password =driver.find_element(By.NAME, ‘password’)
做 it 基本就是这样子。感谢你的回答,热心。
感谢大家,已经做完了。现在的问题是浏览速度比较慢,970 个 ticker,一个要 wait 一分钟,也就 16 个小时?就是有点慢。
话说这 selenium 真是太棒了。
好像 Firefox、Chrome、IE 都可以直接右键检查元素的吧?
要在 Python 里面找的话,你可以考虑看一下 lxml (我没用过, 刚弄了一个用 beautifulsoup 的、感觉很慢


