微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用BS4 + Python从动态网站导出数据:

如何解决使用BS4 + Python从动态网站导出数据:

我想将以下网站中的所有商店数据导出到excel文件中: https://www.ybpn.de/ihre-parfuemerien

问题:地图是“动态的”,因此在输入邮政编码时会加载所需的数据。

需要的数据存储在div类“ storefinder__list-item”中,并且在data-“ storefinder-reference” div类中具有唯一引用,例如:data-storefinder-reference =“ 132”

我尝试过:

soup.find("div",{"data-storefinder-reference": "132"})

输出为: NONE

我认为此问题是由于页面是动态的,因此在输入邮政编码时会加载所需的数据。因此,当我搜索参考ID“ 132”时,它的“那里”却没有加载到网站上,bs4找不到此ID。

有什么想法可以改进代码吗?

解决方法

为此,您可能需要研究selenium和/或“ firefox-headless”之类的工具。

特别是硒,您可以使用Python“远程控制”网页

这是一个教程:https://realpython.com/modern-web-automation-with-python-and-selenium/

,

如果问题是在等待页面加载,则可以使用硒。

`result = driver.execute_script('var text = document.title ; return text')`

如果页面上有jquery,那肯定是

result=driver.execute_script("""
       $(document).ready({
          var $text=$('yourselector').text()
           return $text
           })
          """)

注意:对于硒,您可以查看here

,

您可以仅以chrome或ff打开页面,打开Web调试控制台并查询元素。如果您看到它们,它们就在dom中,因此可以查询。但这将在javascript中完成。如果您很幸运,他们会使用jquery。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。