gpt4 book ai didi

python - 在python中使用selenium获取所有属性 "title"

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

到目前为止,我使用 for 循环通过以下脚本获取页面上特定路径中的所有元素:

for username in range(range_for_like):

link_username_like = "//article/div[2]/div[2]/ul/div/li[" + str(num) + "]/div/div[1]/div/div[1]/a[contains(@class, 'FPmhX notranslate zsYNt ')]"
user = browser.find_element_by_xpath(link_username_like).get_attribute("title")
num += 1
sleep(0.3)

但有时我的cpu会超过100%,这并不理想。

我的解决方案是使用 find_elements_by_xpath 查找一行中的所有元素,但这样做时,我不知道如何获取所有“标题”属性。

我知道每个标题的路径都会改变,//article/div[2]/div[2]/ul/div/li["+ str(num) + "]/div/div[ 1]/div/div[1]/a 这就是我不断增加 num 变量的原因,但是如何在没有循环 for 的情况下使用此技术?

就性能而言,获取所有属性的最有效方法是什么?我不介意是否也需要 2 分钟或更长时间

最佳答案

以下是如何通过 xpath 吸引所有喜欢您照片的人:

//div[text()='Likes']/..//a[@title]

下面的代码获取前 12 个赞:

likes = browser.find_elements_by_xpath("//div[text()='Likes']/..//a[@title]")
for like in likes:
user = like.get_attribute("title")

要获得所有喜欢,您必须滚动,因为这样您可以获得您拥有的总喜欢,然后滚动直到加载所有喜欢。要获得总喜欢数,您可以使用 //a[contains(.,'likes')]/span xpath 并将其转换为整数。

要滚动,请使用 javascript .scrollIntoView() 到最后,最终代码如下所示:

totalLikes = int(browser.find_element_by_xpath("//a[contains(.,'likes')]/span").text)
browser.find_element_by_xpath("//a[contains(.,'likes')]/span").click()

while true:
likes=browser.find_elements_by_xpath("//div[text()='Likes']/..//a[@title]")
likesLen = len(likes)
if (likesLen == totalLikes - 1)
break
browser.execute_script("arguments[0].scrollIntoView()", likes.get(likesLen-1))

for like in likes:
user = like.get_attribute("title")

它是如何工作的:使用 //div[text()='Likes'] 我发现窗口中包含喜欢的唯一 div。然后,为了获得所有喜欢的 li,我使用 /.. 选择器转到父 div ,然后获取所有 a > 带有 title 属性。因为所有人都喜欢不立即加载,所以您必须向下滚动。为此,我在点击喜欢之前获得了总喜欢量。然后我滚动到最后(a[@title])来强制 Instagram 加载一些数据,直到我得到的点赞总数不等于点赞列表。当滚动完成时,我只是迭代抛出我在 while 循环内进入的列表中的所有喜欢并获取标题。

关于python - 在python中使用selenium获取所有属性 "title",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52244588/

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