如何解决使用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 举报,一经查实,本站将立刻删除。