【发布时间】:2022-10-15 19:13:12
【问题描述】:
我有一个支付提供商网站,我需要使用 Selenium 来抓取网站,因为 API 的功能有限。 第一行是导出按钮的 XPATH,代码有效,但在下一个会话中, id 发生变化。
#hover over download icon
element_to_hover_over = driver.find_element(by=By.XPATH, value='//*[@id="pIFE1qieLu"]/div[2]/div/div[1]/div/div[2]/a')
'//*[@id="LdFYNH7TGe"]/div[2]/div/div[1]/div/div[2]/a'
剩下的 XPath 行保持不变,除了 @id 符号。 如何允许这个动态变化的 id 字段?
编辑:添加html代码
[<div class="btn-group dropup pull-left">
<a class="btn dropdown-toggle" data-toggle="dropdown">
Entries 1-200 of 8983 <span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li class=""><a class="ajxl" href="/index.php/filter/setPagination/f/KbInvoiceFilter/m/kb_invoice/a/list/nb/10">Display 10 entries</a></li>
<li class=""><a class="ajxl" href="/index.php/filter/setPagination/f/KbInvoiceFilter/m/kb_invoice/a/list/nb/15">Display 15 entries</a></li>
<li class=""><a class="ajxl" href="/index.php/filter/setPagination/f/KbInvoiceFilter/m/kb_invoice/a/list/nb/20">Display 20 entries</a></li>
<li class=""><a class="ajxl" href="/index.php/filter/setPagination/f/KbInvoiceFilter/m/kb_invoice/a/list/nb/25">Display 25 entries</a></li>
<li class=""><a class="ajxl" href="/index.php/filter/setPagination/f/KbInvoiceFilter/m/kb_invoice/a/list/nb/50">Display 50 entries</a></li>
<li class=""><a class="ajxl" href="/index.php/filter/setPagination/f/KbInvoiceFilter/m/kb_invoice/a/list/nb/100">Display 100 entries</a></li>
<li class="active"><a class="ajxl" href="/index.php/filter/setPagination/f/KbInvoiceFilter/m/kb_invoice/a/list/nb/200">Display 200 entries</a></li>
</ul>
</div>,
<div class="pull-left">
<a class="btn bx-noIcon-margin" data-original-title="Export current list" href="/index.php/filter/export/f/KbInvoiceFilter/m/kb_invoice/a/list" onclick="if (!this.getAttribute('disabled')) jq_load_dialog('/index.php/filter/export/f/KbInvoiceFilter/m/kb_invoice/a/list',{autoOpen:false, bgiframe:false, close:'function() { $(this).dialog(\'destroy\'); }', maxHeight:2000, maxWidth:2024, modal:true, resizable:false, title:'Download as Excel file', width:400},'#jqDialog'); return false;" rel="tooltip" title=""><i class="glyphicons download_alt"></i> </a> </div>,
<div class="pull-left">
<a class="btn bx-noIcon-margin" data-original-title="Email list documents" href="/index.php/filter/send/f/KbInvoiceFilter/m/kb_invoice/a/list" onclick="if (!this.getAttribute('disabled')) jq_load_dialog('/index.php/filter/send/f/KbInvoiceFilter/m/kb_invoice/a/list',{autoOpen:false, bgiframe:false, close:'function() { $(this).dialog(\'destroy\'); }', maxHeight:2000, maxWidth:2024, modal:true, resizable:false, title:'Email list documents', width:550},'#jqDialog'); return false;" rel="tooltip" title=""><i class="glyphicons envelope"></i> </a> </div>]
【问题讨论】:
-
你能确认一下网址吗?
-
该网址适用于我访问该页面。
-
伙计,确认(陈述,写)页面的网址,以便任何愿意帮助您进行测试的人。您需要发布一个最小的可重现示例。
-
哦,对不起,它是一家订阅公司,所以我们需要有用户名和密码。 bexio.com/en-CH
-
我们需要一些围绕您要查找的元素的相关 HTML。当然,您想要或附近的元素中有一些独特的属性,但我们看不到它来帮助您,因为它是一个需要登录的站点。
标签: python selenium web-scraping