【发布时间】:2020-04-14 19:23:57
【问题描述】:
只是在做一个小项目,我想通过网络获取特定商品的价格。我以前从未这样做过,我在使用一些方法时遇到了困难。
这是有问题的网页: https://www.made.com/keira-office-chair-cloud-grey-and-copper
这是有问题的元素:
<div class="ProductPrice__PriceWrapper-rtg8id-0 guIZZV"><span class="ProductPrice__Price-rtg8id-1 jYfukd">£149</span><div></div><div></div></div> <span class="ProductPrice__Price-rtg8id-1 jYfukd">£149</span><div></div><div></div>
我正在尝试的代码如下:
import requests, bs4
URL = 'https://www.made.com/keira-office-chair-cloud-grey-and-copper'
page = requests.get(URL,headers={"User-Agent":"Defined"})
page.raise_for_status()
soup = bs4.BeautifulSoup(page.content, 'html.parser')
price = soup.find('ProductPrice__Price-rtg8id-1 jYfukd').get_text()
print(price)
我收到的错误是:
ttributeError: 'NoneType' object has no attribute 'get_text'
我环顾四周,似乎一种更简单的方法是使用 CSS 选择器,但是我已经尝试过(可能不正确),当我运行我的脚本时,它只返回“[]”。
谁能解释我做错了什么,或者我应该寻找什么?
【问题讨论】:
-
如果我没记错的话,您没有在页面上运行任何 javascript,因此动态加载的内容根本不会出现在您的请求中。您将需要使用像
selenium这样实际呈现页面的东西。 here 是我刚刚发现的这类东西的教程
标签: python html css web-scraping