【发布时间】:2018-12-15 11:59:41
【问题描述】:
我正在尝试从中获取每个产品的名称和价格 https://www.daraz.pk/catalog/?q=risk 但什么也没显示。
containers = page_soup.find_all("div",{"class":"c2p6A5"})
for container in containers:
pname = container.findAll("div", {"class": "c29Vt5"})
name = pname[0].text
price1 = container.findAll("span", {"class": "c29VZV"})
price = price1[0].text
print(name)
print(price)
【问题讨论】:
-
您可以获取 json,但您必须知道页数才能获得所有结果。获取页数的唯一方法是首先让页面呈现,例如使用 selenium 然后切换到请求。您也不需要使用正则表达式,因为您可以简单地执行 item = soup.select('script')[2]
-
是的,谢谢.. 其他人也建议过这个我还在弄清楚:你们如何检查它返回的 json 数据
-
F12 打开开发工具并检查 html。我使用 Ctrl + F (5,900) 在 html 中搜索了第一个价格。这向我展示了该值在脚本标记内的 json 字符串中的出现。您可以从脚本语法中看到这是用于更新页面的。您可以使用语法获取每个页面:daraz.pk/catalog/?page=1&q=risk 并更改页码。但是,如果不使用浏览器 (AFAIK),您无法获得总页数。
-
所以我会根据时间是否真的是一个问题,使用一种解决方案来呈现页面以获取页码计数,然后切换到请求。您可以从使用选择器 li[class*="ant-pagination-item ant-pagination-item-"] 的 len 中获取页数
-
非常感谢
标签: python web-scraping beautifulsoup