BeautifulSoup随机返回无

时间:2016-12-01 06:40:48

标签: python selenium-webdriver web-scraping beautifulsoup

我们正试图从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

我们将不胜感激为此问题提供任何帮助。

1 个答案:

答案 0 :(得分:0)

如果您正在抓取网页内容并从一次网络抓取工具中获得不同的结果,即使您未对计划进行任何更改,最可能的解释是检索到网页内容正在从一次运行变为另一次运行。

尝试捕获findPrice失败并在下次发生时转储页面来源,并了解为什么soup.find来电无法找到所需内容。