Selenium on Colab: Python中文本提取的错误结果



当我在Python中使用Chromedriver来抓取某个网站时,如果我通过Colab运行脚本,我只会得到错误的结果。例如,如果我使用Spyder,一切似乎都很好。

在我看来,硒仍然在寻找正确的元素,但它提取奇怪的数字,我在网站上找不到。

网站与结果:网站编号(https://i.stack.imgur.com/bEKbh.png)

Colab返回:结果来自Colab(https://i.stack.imgur.com/1EbOM.png)

网站:"https://www.oddsportal.com/soccer/croatia/hnl/hnk-gorica-varazdin-Kr4sLgwt/1 x2; 2,

我用这个函数来测试:

def fi(a):
try:
driver.find_element("xpath", a).text
except:
return False

这个用来获取文本:

def ffi(a):
if fi(a) != False :
return driver.find_element("xpath", a).text

完整的代码

driver.get("https://www.oddsportal.com/soccer/croatia/hnl/hnk-gorica-varazdin-Kr4sLgwt/#1X2;2")
for j in range(1,15):
print(j)
book= ffi('((//*[starts-with(@class,"flex text-xs max")])[{}]//p)[1]'.format(j))
if fi('((//*[starts-with(@class,"flex text-xs max")])[{}]//p)[2]//preceding-sibling::a'.format(j))==False:
Odd_1=ffi('((//*[starts-with(@class,"flex text-xs max")])[{}]//p)[2]'.format(j))
else:
Odd_1=fi('((//*[starts-with(@class,"flex text-xs max")])[{}]//a)[5]'.format(j))

if fi('((//*[starts-with(@class,"flex text-xs max")])[{}]//p)[3]//preceding-sibling::a'.format(j))==False:
Odd_X=ffi('((//*[starts-with(@class,"flex text-xs max")])[{}]//p)[3]'.format(j))
else:
Odd_X=ffi('((//*[starts-with(@class,"flex text-xs max")])[{}]//a)[6]'.format(j))       
if fi('((//*[starts-with(@class,"flex text-xs max")])[{}]//p)[4]//preceding-sibling::a'.format(j))==False:
Odd_2=ffi('((//*[starts-with(@class,"flex text-xs max")])[{}]//p)[4]'.format(j))
else:
Odd_2=ffi('((//*[starts-with(@class,"flex text-xs max")])[{}]//a)[7]'.format(j))
ab= (ffi('//div[contains(@class,"flex items-center w-full h-auto")]//p'))
bc=(ffi('(//div[contains(@class,"flex px")]//child::div)[3]'))       
print(book, Odd_1, Odd_X, Odd_2,ab ,bc)

再次在spyder上运行良好

编辑:我通过Replit运行了这段代码,所以我可以看到网页。事实证明,由于某种原因,整个网站都加载了错误的值。所以基本上代码是好的,但是网站是错误的。我比以前更困惑了。

的例子:

使用Google Colab时,您的IP和语言标识符可能会更改。这可能导致不一致或不同的页面布局。

尝试截图并获取页面源,并与本地测试进行比较。还要检查定位器是否仍然与colab

中的页面源代码匹配。请确保你使用的是同一个浏览器。

相关内容

  • 没有找到相关文章

最新更新