2016-12-01 4 views
0

Мы пытаемся очистить продукты от Urban Outfitters и испытываем некоторые странные проблемы с помощью метода findSearchSearch. Мы называем soup.find ('span', {"class": "mainPrice ng-scope ng-binding"}) на URL-адресе продукта, чтобы получить цену. Когда мы просматриваем URL-адреса продукта (через веб-сканирование), вызов soup.find возвращает в случайное время.BeautifulSoup Find Randomly Returning 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

Когда вы очищаете веб-контент и получаете разные результаты от одного запуска вашего веб-скребка к другому, даже если вы не внесли никаких изменений в свою программу, наиболее вероятным объяснением является то, что извлеченный веб-контент переходя от одного прохода к другому.

Попробуйте поймать ошибку findPrice и сбросить источник страницы в следующий раз, когда это произойдет, и посмотрите, почему ваш звонок soup.find не может найти то, что он ищет.

Смежные вопросы