python - 在所有带有文本的节点及其 xpath 之间创建映射
问题描述
我有一个 HTML 页面。我想找出那里存在的所有文本节点的 xpath 并将它们存储在一个 excel 文件中。
代码
start_path='.//tr|.//div[not(ancestor::div)][not(descendant::tr)]'
row_data_points=hxs.select(start_path)
for r in row_data_points:
row=r.select('.//text()').extract()
path_prefix='('+start_path+')['+str(row_data_points.index(r)+1)+']'
row=[x.replace('\n','').replace('\t','') for x in row]
row=[x for x in row if x.strip()!='']
d={}
for r1 in row:
path=path_prefix+"//*[text()="+"'"+r1+"'"+"]"
#path
stg="var element=document.evaluate("+'"'+path+'"'+",document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;return element.getBoundingClientRect()"
print "trying",stg
print "1111",stg
d[row.index(unidecode(r1))]={'value':unidecode(r1),'loc':driver.execute_script(str(stg))}
当我使用所有文本节点(.//text)
然后我使用文本节点创建 xpath 时出现不需要的字符时,问题就来了。它找不到元素。是否有任何其他方式或任何图书馆已经存在这样做。
解决方案
推荐阅读
- javascript - 如何在 vue 中更改 vue v-model 语法
- c++ - 如何使用 Direct X11 XAML UWP、C++ 将纹理映射到默认立方体?
- assembly - 为什么 MacOS 使用绝对内存位置进行系统调用?
- spring - Spring Data JDBC - Kotlin 支持 - 找不到类所需的属性
- c++ - 在 C++ 中使用 nullptr 访问类的成员
- r - 仅对正态曲线下的部分顶部区域进行着色
- express - nuxt.js auth-next 模块:LoginWith 没有响应,虽然没有错误
- javascript - 将 withStyles 与命名的导出 React 类组件一起使用
- python - 如何在类之间传递熊猫数据框
- javascript - JavaScript按下按钮以显示文本不适用于多个按钮