如何解决复制 xpath 元素在 Python 上不起作用
我尝试了一些访问 twitter 的 python 代码 > 复制“Happening now”文本。但是没有用。
import webbrowser
print("Visiting Twitter.com...")
webbrowser.get('C:/Program Files (x86)/Google/Chrome/Application/chrome.exe %s').open_new('https://twitter.com')
content = webbrowser.find_element_by_xpath('//*[@id="react-root"]/div/div/div/main/div/div/div/div[1]/div[2]/div[1]/span').text
错误: 回溯(最近一次调用最后一次): 文件“C:/Users/Admin/PycharmProjects/pythonProject/main.py”,第 5 行,在 content = webbrowser.find_element_by_xpath('//*[@id="react-root"]/div/div/div/main/div/div/div/div[1]/div[2]/div[1]/跨度')。文本 AttributeError: 模块“webbrowser”没有属性“find_element_by_xpath”
解决方法
您没有初始化浏览器!
您必须先执行类似 driver = new ChromeDriver();
的操作。
此外,您应该在从元素读取文本之前添加一些等待条件,例如 wait.until(ExpectedConditions.visibilityOfElementLocated(element));
我提供的代码在 Java
中,但在 Python
当我查看 webbrowser.py 文件中的源代码时,我看不到任何与“find_element_by_xpath”属性相关的内容,因此出现此错误。
Traceback (most recent call last):
File "/Users/burakhanaksoy/Desktop/untitled folder/main.py",line 5,in <module>
content = webbrowser.find_element_by_xpath('//*[@id="react-root"]/div/div/div/main/div/div/div/div[1]/div[2]/div[1]/span').text
AttributeError: module 'webbrowser' has no attribute 'find_element_by_xpath'
如果你想使用 xpath,我给你的建议是使用 selenium。并且您应该避免使用 div/div/div 类型的 xpath,因为一旦 twitter 在那里添加另一个 div,您的代码很容易中断。
如果您想通过 xpath 查找“Happening Now”文本,您应该使用类似 //*[contains(text(),'Happening Now')]
您可以从 -> https://selenium-python.readthedocs.io/getting-started.html#simple-usage
开始 ,就我个人而言,我讨厌使用 XPath,因为它令人困惑并且会给我带来很多不必要的错误
我总是使用 CSS 选择器,因为它更简单、更可靠
webbrowser.find_element_by_css_selector('put_css_selector_here')
如果你不知道 css 选择器是如何工作的 click this link
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。