我们正试图从Urban Outfitters中剔除产品,并且在使用BeautifulSoup查找方法时遇到了一些奇怪的问题。我们在产品网址上调用soup.find('span',{“class”:“mainPrice ng-scope ng-binding”})来获取价格。当我们浏览产品网址(通过网络抓取)时,soup.find调用将在随机时间返回任何内容。
例如,在一次运行程序时,它在第二个链接上返回none。在没有改变任何东西的情况下立即运行程序时,它通过第二个链接并在第8个链接上失败。 Here is a link to our output
以下是我们的代码:
def findPrice(soup):
price = soup.find('span', {"class" : "mainPrice ng-scope ng-binding"})
print price
if price is not None:
return price.text.strip()
def postProduct(url):
driver.get(url)
html = driver.page_source
soup = BeautifulSoup(html, "html.parser")
product = {'brand': findBrand(soup), 'name': findProductName(soup), 'price': findPrice(soup), 'image': findImageLink(soup), 'description': findDescription(soup), 'url': url}
# products.insert(product)
请注意,不相关的功能已被遗漏。下面是我们称之为postProduct函数的循环:
Link to the loop containing postProduct function
我们将不胜感激为此问题提供任何帮助。
答案 0 :(得分:0)
如果您正在抓取网页内容并从一次网络抓取工具中获得不同的结果,即使您未对计划进行任何更改,最可能的解释是检索到网页内容正在从一次运行变为另一次运行。
尝试捕获findPrice
失败并在下次发生时转储页面来源,并了解为什么soup.find
来电无法找到所需内容。