微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

抓取动态网页元素

如何解决抓取动态网页元素

我正在尝试从这样的比赛页面中抓取赔率数据: https://www.oddsportal.com/soccer/germany/bundesliga/freiburg-dortmund-WAyMx9XS/#over-under;2

可以看出,此页面允许扩展多个 Over/Under Sections,它们都包含在如下两个动态 URL 后面:

大于/小于 0,5:https://www.oddsportal.com/soccer/germany/bundesliga/freiburg-dortmund-WAyMx9XS/#over-under;2;0.50;0

大于/小于 1:https://www.oddsportal.com/soccer/germany/bundesliga/freiburg-dortmund-WAyMx9XS/#over-under;2;1.00;0

我像这样循环浏览这些不同的页面

   o_u_types= [0.50,1.00,1.50,1.75,2.00,2.25,2.50,2.75,3.00,3.50,4.00,4.50,5.50,6.50]
            
   for i in o_u_types:
                url_appendix="/#over-under;2;{};0".format(i)
                o_u_type= i
                o_u_match_url= str(link)+str(url_appendix) #Link is the "base link" of the match
                print(o_u_match_url)
                try:
                    self.openmatch(o_u_match_url) #Function to open the resulting match URL
                    time.sleep(1)
                    self.driver.refresh()

现在我想从表格的每一行中检索 Bookmaker、Over 和 Under 的值。问题是包含这些元素的 td 和 tr 元素的 id 随每一行而变化,我无法找出最有效的方法来处理这个.. 以博彩公司为例,我尝试了以下两个(FFI 是一个通过 xpath 查找元素的函数):

 for j in range(1,15): # This serves to loop through each and every possible bookmaker,as the td are increasing up to 15 values within one over/under section

       Book = self.ffi('///*[contains(@id,"table")]/tbody/tr[{}]/td[1]/div/a[2])'.format(j)) # first bookmaker name

       Book=self.driver.find_element_by_css_selector("[id$='odds-data-table']>tbody>tr:nth-of-type({})>td:nth-of-type(2)").format(j)

然而,这些都不会给我带来价值..

到目前为止,唯一对我有用的是:

    for x in range(1,28):
            for j in range(1,15): 
                Book = self.ffi('//*[@id="odds-data-table"]/div[{}]/table/tbody/tr[{}]/td[1]/div/a[2]'.format(x,j)) # first bookmaker name

正如您可能看到的,这会产生很多不必要的循环,因为许多 x,j 组合是不存在的 tr-td 组合,因此返回“无”。这些不必要的循环严重影响了我的程序的性能

您能帮我找出处理大/小部分中这些不同的 tr、td 数字的正确方法吗? 如果需要,我很乐意提供更多意见!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?