【问题标题】:Fetch links having no href attribute : Selenium-Python获取没有 href 属性的链接:Selenium-Python
【发布时间】:2017-09-28 07:07:02
【问题描述】:

我目前正在尝试使用 selenium-python 以指定的抓取深度在整个网站中进行抓取。我从Google 开始,并考虑通过爬取并同时开发代码来前进。

它的工作方式是:如果页面是 'www.google.com' 并且其中有 15 个链接,一旦获取所有链接,它就会存储在一个字典中,其中 'www.google.com' 作为键和 15 个链接的列表作为值。然后从对应的字典中取出 15 个链接中的每一个,并以 递归 方式继续爬取。

这样做的问题是它会在页面上找到的每个链接的 href 属性方面向前移动。但不是每个链接都有 href 属性。

例如:当它爬到My Account Page 时,它的页脚中有帮助和反馈,它的outerHTML 为<span role="button" tabindex="0" class="fK1S1c" jsname="ngKiOe">Help and Feedback</span>

所以我不确定的是——在这种情况下可以做什么,因为它没有链接,但会打开一个模式窗口/对话框或排序。

【问题讨论】:

    标签: python selenium web-crawler


    【解决方案1】:

    您可能需要找到一种链接设计模式。例如:你 可能有一个带有锚标签的链接,在你的情况下是跨度。

    这取决于网页的设计。开发人员打算如何通过属性/标识符来设计 html 元素。

    例如:如果开发人员决定为所有不具有锚标记名称的链接设置一个公共类值,则很容易识别所有这些元素。

    您也可以尝试编写一个脚本来获取所有元素 预期的标签名称(例如:span)并尝试点击 元素。您可以获取后端响应/日志的详细信息 细节。因此,对于那些点击,您可以获得额外的 response/log 意味着它后面有一个额外的代码 让我们知道它不是静态元素。

    【讨论】:

    • 感谢您的回复。但我要处理的问题是概括概念,而不是单独处理每个案例。所以我目前的计划是推进不同的网站,以检查它们是否已编码并相应地编写。我知道这个想法是完全荒谬的。但除非有一个好的计划/想法出现,否则我将继续前进。
    猜你喜欢
    • 1970-01-01
    • 2019-06-13
    • 1970-01-01
    • 2020-02-28
    • 1970-01-01
    • 1970-01-01
    • 2019-08-25
    • 2014-06-18
    • 2016-04-18
    相关资源
    最近更新 更多