Selenium 教程第 3 部分
Selenium 教程第 3 部分
我真的很抱歉放弃这部续集。实际上,我在写这篇文章的时候就失去了动力,想着谁会去读它,甚至会喜欢它。但是看到您的一些支持者喜欢这个故事或添加到他们的阅读列表中,我感到内疚并想为此道歉并且也有动力。分享是一件好事,因为我们不知道谁在寻找它!现在,无论如何我都会继续写下去。谢谢大家:)
重要的提示: 我在 2022 年写这篇文章 1 和 2 写于 2021 年 4 月。所以,在使用硒时,我发现硒有 不推荐使用 find_element_by_ 方法。因此,以前的代码可能不起作用。在这一部分中,我使用的是最新的 selenium 版本,因此将向您展示如何使用新的方法和语法进行抓取。
因此,继续前进,当您在 Twitter 上搜索任何内容并按 Enter 键时,您将位于顶部。
top section
所以,从这里我想去人物部分并选择官方的 BTS 帐户。为此,我们可以使用 xpath 并以 People 形式查找文本并在那里执行单击事件。如前所示,xpath 使用文本在网页上查找元素的语法是 //*[text()='你的文字']. 因此,对于单击 People 部分,xpath 将是 //*[text()='People']。您也可以在检查页面上确认这一点。
在此页面中,您将看到 3 个单词与 People 和第一个总是以圆圈突出显示的元素。好在 查找元素 将给出第一次出现 People 的元素,如果你想要其他两个也可以使用 查找元素 .
单击“人员”部分的新语法是:
我们使用驱动变量,现在 selenium 只有一个功能 查找元素 为所有类型的操作和函数内部用户名,我们通过您要查找的方法和实际的 Web 元素传递,然后像往常一样使用 click() 函数。关键字 经过 来自硒的进口。 By 拥有所有其他功能来定位 Web 元素,如 By.TAG_NAME、By.CLASS_NAME 等(查看官方网站了解更多信息)。使用 sleep 加载页面。
library imports
现在我们在这个页面:
People section for search BTS
现在我们需要选择第一个是BTS的官方账号。要再次执行此操作,请右键单击第一个帐户并选择检查。找到 web 元素或只使用文本所在的 xpath '防弹童子军'。 我发现这非常简单,您正在利用这个词在页面中独一无二。现在只需找到带有此文本的元素并单击它并等待加载页面。
selecting bts official account
单击此按钮后,我们在此页面上:
official account of bts
现在,我们将从这个页面收集官方 bts 推文、点赞数、转推、评论、帐户名称、@... 等。首先,我们需要找到单个帖子。这会很困难,但别担心,我会在你身边 😃 再次右键单击帖子并单击检查。
你会发现这些列表
选择一个
所以,探索和尝试不同的方法,我发现 **
selecting individual posts
请注意,这里我没有使用单击,而是将 Web 元素分配给了一个变量。因为 查找元素 返回给定 xpath 的 Web 元素列表。这里的网络元素列表是各个帖子。现在我们需要找到帐户名、用户名、推文和计数。现在,在 Twitter 上发一篇帖子并进行检查。现在是你的锻炼时间,深入了解
无论哪种方式,您都会看到有这两个 div 标签,它分隔 一个 div 标签中的 Twitter 名称和用户名 和 另一个 div 标签上的 twitter 文本和反应元素。
接下来,我们需要深入了解这两个 div 标签。因此,当您展开第一个 div 标签以获取帐户名称和用户名时,您将看到这两个 div 标签, 1 给我们帐户名称和 2 给我们推特用户名。我们可以使用 div 标签来定位它。尽管如此,我们还没有得到帐户名称。要获取帐户名称,展开第一个 div 标签,您会发现文本在 ** ** 标签。
div tags of acc name & acc username
expanding div tag corresponding to acc name
这里涉及到层次结构的知识。这 ** ** 标签位于 div 标签内。因此,要进入任何 div 或任何父标签,我们遵循以下语法:
//parent_tag[]//child_tag1[]//child_tag11[]…
示例:要获取帐户名称,我们可以遵循以下语法:
//div[ @班级 ='css-1dbjc4n r-1awozwy r-18u37iz r-1wbh5a2 r-dnmrzs']//跨度
上面的语法突出显示 div 标签内的第一个 span 标签,但 acc 名称在第二个 span 标签中。但是在这里你可以应用一个技巧而不是技巧,而是硒的一个功能。您可以通过选择唯一的父标签来收集标签内的所有文本并使用 文本 属性。这意味着在这种情况下你不需要去寻找 span 标签。
同样,我们可以只选择 **
接下来要找到反应计数,您将找到这三个标签,如果您使用属性 数据测试, 您可以找到各个元素并使用 text 属性来获取数字。
expanding reactions div tag
前三个是对应的 **
要单独定位每一个,您会发现 数据测试 有帮助。扩展并看到自己。
下面是从每个帖子中收集信息并存储在列表中的代码。
现在剩下的最后一部分是自动向下滚动页面。太简单了,你可以参考这个 堆栈溢出 页。
为了给你一些提示,滚动我们使用以下语法:
我们使用一些睡眠时间让页面加载帖子。在里面 堆栈溢出 页面你会发现如何在无限循环中滚动。
在下面的代码中,我滚动直到获得 10 个帖子的信息:
欢呼!我完成了这篇文章,你学会了如何从 twitter 页面上抓取,呵呵……我希望我没有让你感到无聊,也没有因为使用 BTS 帐户而冒犯任何人。我希望你把它当作学习。感谢您阅读它,再次感谢支持我以前的文章并激励我继续写作的人们:)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通