«Цена» продукта Flipkart.com и извлечение продукта «название» с использованием Python

Я написал следующий код Python, чтобы извлечь ЦЕНУ элемента, указанного на flipkart.com

import urllib2 import bs4 import re item="Wilco Classic Library: Autobiography Of a Yogi (Hardcover)" item.replace(" ", "+") link = 'http://www.flipkart.com/search/a/all?query={0}&vertical=all&dd=0&autosuggest[as]=off&autosuggest[as-submittype]=entered&autosuggest[as-grouprank]=0&autosuggest[as-overallrank]=0&autosuggest[orig-query]=&autosuggest[as-shown]=off&Search=%C2%A0&otracker=start&_r=YSWdYULYzr4VBYklfpZRbw--&_l=pMHn9vNCOBi05LKC_PwHFQ--&ref=a2c6fadc-2e24-4412-be6a-ce02c9707310&selmitem=All+Categories'.format(item) r = urllib2.Request(link, headers={"User-Agent": "Python-urlli~"}) try: response = urllib2.urlopen(r) except: print "Internet connection error" thePage = response.read() soup = bs4.BeautifulSoup(thePage) firstBlockSoup = soup.find('div', attrs={'class': 'fk-srch-item'}) priceSoup=firstBlockSoup.find('b',attrs={'class':'fksd-bodytext price final-price'}) price=priceSoup.contents[0] print price titleSoup=firstBlockSoup.find('a',attrs={'class':'fk-srch-title-text fksd-bodytext'}) title=titleSoup.findAll('b') print title 

Приведенный выше код при печати печатает ЦЕНУ без проблем.

 Rs. 138 

Но название получается следующим образом:

 [<b>Wilco</b>, <b>Classic</b>, <b>Library</b>, <b>Autobiography</b>, <b>Of</b>, <b>a</b>, <b>Yogi</b>, <b>Hardcover</b>] 

Причина будет очевидна, если вы посмотрите на исходный код страницы продукта (используйте «Inspect element»)

Теперь, как извлечь TITLE в правильном формате, чтобы печатать:

 Wilco Classic Library: Autobiography Of a Yogi (Hardcover) 

2 Solutions collect form web for “«Цена» продукта Flipkart.com и извлечение продукта «название» с использованием Python”

Просто используйте text метод на titleSoup

 >>> titleSoup=firstBlockSoup.find('a',attrs={'class':'fk-srch-title-text fksd-bodytext'}) >>> titleSoup.text u'Wilco Classic Library: Autobiography Of a Yogi (Hardcover)' 

Это также будет работать:

 invalid_tags = ['b'] titleSoup=firstBlockSoup.find('a',attrs={'class':'fk-srch-title-text fksd-bodytext'}) for tag in invalid_tags: for match in titleSoup.findAll(tag): match.replaceWithChildren() print "".join(titleSoup.contents) 

Легче получить заголовок из тега firstBlockSoup :

 >>> firstBlockSoup.attrs['data-item-name'] 'Wilco Classic Library: Autobiography Of a Yogi (Hardcover)' 
  • Проблема скремблирования созданного javascript контента с помощью Selenium и python
  • Почему request.get () извлекает разные HTML-файлы с помощью Python, чем браузер?
  • Удалите несколько страниц с помощью BeautifulSoup и Python
  • Форматирование текста в таблице на Python
  • Веб-скребка HTML-таблицы с использованием Python
  • Данные веб-соскабливания с интерактивной диаграммы
  • Обход ответа скрипта при очистке веб-сайта с помощью запросов / BeautifulSoup
  • Скребок с красивым супом: почему метод get_text не возвращает текст этого элемента?
  • Отсутствуют значения веб-страницы при очистке данных с помощью BeautifulSoup python 3.6
  • веб-очистка данных из таблиц
  • Использование Python для очистки вложенных разделов и интервалов в Twitter?
  • Python - лучший язык программирования в мире.