gpt4 book ai didi

python - 如何组合 WebDriver find_elements_by* 调用,同时跟踪结果的顺序?

转载 作者:行者123 更新时间:2023-12-01 04:24:47 25 4
gpt4 key购买 nike

在典型的 Google 本地搜索结果页面上,例如 this其中有 20 个结果:

enter image description here

评论要么以“无评论”的形式给出,可以使用以下方式提取:

driver.find_elements_by_class_name("_Juh")

或者:

非零数量的评论,可以使用以下方式提取:

driver.find_elements_by_css_selector("div:nth-child(1) > div:nth-child(1) > span:nth-child(2) > div:nth-child(1) > span:nth-child(1)")

或者:

只是括号中的数字,例如(7),可以使用以下方法提取:

driver.find_elements_by_css_selector("div:nth-child(1) > div:nth-child(1) > span:nth-child(2) > div:nth-child(3) > span:nth-child(1)")

因此,我可以提取全部 20 条评论计数。 挑战:我需要能够 (i) 一次性提取所有内容,并且 (ii) 跟踪它们在 20 个结果列表中的位置。这是因为我将单击每个结果,从 map Pane 中提取一些详细信息,然后将这些详细信息与每个结果的评论计数进行比较。如何最好地实现这一目标?

最佳答案

尝试以下操作 - 它将按顺序抓取所有内容,但带有星级!然后应用python来清理它们-

我尝试了this链接。

Xpath

//*[@class='_rl']/following-sibling::span[1]

返回

4.9(7)
3 reviews
3 reviews
4.2(24)
5.0(44)
4.9(16)
4.9(7)
4.7(5)
2 reviews
No reviews
5.0(14)
4.9(9)
4.7(5)
4.3(5)
1 review
4.6(7)
No reviews
4 reviews
2 reviews
4.7(12)

现在应用 python 来清理(你按照你的方式 - 这只是测试)-

>>> s = '''4.9(7)
3 reviews
3 reviews
4.2(24)
5.0(44)
4.9(16)
4.9(7)
4.7(5)
2 reviews
No reviews
5.0(14)
4.9(9)
4.7(5)
4.3(5)
1 review
4.6(7)
No reviews
4 reviews
2 reviews
4.7(12)'''
>>> mylist=s.split('\n')
>>> clndlist = [i.split("(")[-1].replace(")","") if "(" in i else i for i in mylist]
>>> clndlist

>>> ['7', '3 reviews', '3 reviews', '24', '44', '16', '7', '5', '2 reviews', 'No reviews', '14', '9', '5', '5', '1 review', '7', 'No reviews', '4 reviews', '2 reviews', '12', '']

关于python - 如何组合 WebDriver find_elements_by* 调用,同时跟踪结果的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33273312/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com