我目前正在尝试使用 selenium-python 通过具有指定抓取深度的整个网站进行抓取。我从Google开始,并考虑通过爬行前进并同时开发代码。
它的工作方式是:如果页面是“www.google.com”并且其中包含15个链接,则在获取所有链接后,它将存储在带有“www.google.com”的字典中密钥和15个链接的列表作为值。然后,从相应的字典中获取15个链接中的每个链接,并以 递归 方式继续抓取。
这个问题在于它相对于页面上找到的每个链接的 href 属性向前移动。但并非每个链接都有href属性。
例如:当它抓取并到达My Account Page时,它的页脚中有帮助和反馈,其外部HTML为
<span role="button" tabindex="0" class="fK1S1c" jsname="ngKiOe">Help and Feedback</span>
。
所以我不确定是什么 - 在javascript / ajax高度支持链接的情况下可以做些什么呢?因为它没有链接但是打开了一个模态窗口/对话框或排序。
答案 0 :(得分:0)
您可能需要找到链接的设计模式。例如:你 可以有一个锚标记链接,在你的情况下。
这取决于网页的设计。开发人员如何通过属性/标识符来设计html元素。
例如:如果dev决定为所有不带锚标记名称的链接都有一个公共类值,那么很容易识别所有这些元素。
你也可以尝试编写一个脚本来获取所有元素 预期的标签名称(例如:span)在这里并尝试点击 元素。您可以获取后端响应/日志的详细信息 细节。所以对于那些,点击,您获得额外的 响应/日志意味着它后面写了一个额外的代码 让我们知道它不是一个静态元素。