【发布时间】:2020-09-04 05:34:47
【问题描述】:
我想将以下网站的所有商店数据导出到 excel 文件中: https://www.ybpn.de/ihre-parfuemerien
问题:地图是“动态的”,因此当您输入邮政编码时会加载所需的数据。
需要的数据存储在 div-class "storefinder__list-item" 中,在 data-"storefinder-reference" div-class 中具有唯一引用,例如:data-storefinder-reference="132"
我试过了:
soup.find("div", {"data-storefinder-reference": "132"})
但是输出是:NONE
我认为这个问题是由于页面是动态的,因此当您输入邮政编码时会加载所需的数据。因此,当我搜索参考 ID“132”时,它的“那里”,但未加载到网站上,bs4 无法找到此 ID。
有改进代码的想法吗?
【问题讨论】:
-
我认为你可以只使用请求。你能分享一个你希望得到的邮政编码和数据的例子吗?
-
邮政编码:10365 然后我得到 5 个“storefinder__list-item storefinder__list-item--active” div-classes,在每个 div-class 中都是我需要的数据的子类,例如:storefinder- item__title 或 storefinder-item__adress。但问题是该页面仅加载 5 个结果,超过 1000 个 - 我需要完整列表:/
-
您的任务称为
web-scraping。因此,我强烈推荐使用 Scrapy 来实现这一点。基本上,Scrapy 的工作方式类似于 BS4 + Python 请求,但更健壮和成熟。如果您需要处理动态元素,Scrapy-Splash 也会为您提供帮助。检查这个Scrapy-Splash Introduction -
谢谢!是的,我实际上在使用 bs4 + selenium 时遇到了一些问题。尝试你的方式可能会更好。
标签: python beautifulsoup