как очистить информацию о продукте на веб-странице amazon с помощью beautifulsoup

Для веб-страницы: http://www.amazon.com/Harry-Potter-Prisoner-Azkaban-Rowling/dp/0439136369/ref=pd_sim_b_2?ie=UTF8&refRID=1MFBRAECGPMVZC5MJCWG. Как я мог очистить детали продукта и вывести dict в python. В приведенном выше случае вывод dict, который я хочу получить, будет:

Age Range: 9 - 12 years Grade Level: 4 - 7 ... ... 

Я новичок в beautifulsoup и не нашел хорошего примера, чтобы это произошло. Я хочу привести пример.

2 Solutions collect form web for “как очистить информацию о продукте на веб-странице amazon с помощью beautifulsoup”

Идея состоит в том, чтобы перебирать все элементы Product Details с помощью table#productDetailsTable div.content ul li CSS selector , затем использовать жирный текст в качестве ключа и следующего брата как значение:

 from pprint import pprint from bs4 import BeautifulSoup import requests url = 'http://www.amazon.com/dp/0439136369' response = requests.get(url, headers={'User-agent': 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36'}) soup = BeautifulSoup(response.content) tags = {} for li in soup.select('table#productDetailsTable div.content ul li'): try: title = li.b key = title.text.strip().rstrip(':') value = title.next_sibling.strip() tags[key] = value except AttributeError: break pprint(tags) 

Печать:

 { u'Age Range': u'9 - 12 years', u'Amazon Best Sellers Rank': u'#1,440 in Books (', u'Average Customer Review': u'', u'Grade Level': u'4 - 7', u'ISBN-10': u'0439136369', u'ISBN-13': u'978-0439136365', u'Language': u'English', u'Lexile Measure': u'880L', u'Mass Market Paperback': u'448 pages', u'Product Dimensions': u'1.2 x 5.2 x 7.8 inches', u'Publisher': u'Scholastic Paperbacks (September 11, 2001)', u'Series': u'Harry Potter (Book 3)', u'Shipping Weight': u'11.2 ounces (' } 

Обратите внимание, что мы разрываем цикл, как только попадаем в AttributeError . Это происходит после того, как внутри элемента li нет более жирного текста.

 from bs4 import BeautifulSoup import urllib import urllib2 headers = {'User-agent': 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36'} url = 'http://www.amazon.com/dp/0439136369' data = urllib.urlencode(headers) req = urllib2.Request(url,data) soup = BeautifulSoup(urllib2.urlopen(req).read()) for x in soup.find_all('table',id='productDetailsTable'): for tag in x.find_all('li'): tag.get_text() 

Из приведенного выше кода вы можете извлечь текст из таблицы, я не отформатировал его для печати или ввода в dict, как вы сказали, вам мало нужна помощь. так что я сделал в этом вышеприведенном коде. Мне нужно изменить user-agent поскольку amazon не разрешал python user-agent . используя find_all, я нахожу таблицу с id=productDetailsTable' . затем я перебираю его, чтобы найти все теги li поскольку вся информация хранится в этом теге.

  • Проблема скремблирования созданного javascript контента с помощью Selenium и python
  • отправить запрос с использованием python на страницу asp.net
  • Загрузите файлы .xls с веб-страницы с помощью Python и BeautifulSoup
  • извлечение только-родственного элемента в xpath
  • Обработка индийских языков в BeautifulSoup
  • Как очистить теги html, распространяемые по нескольким строкам в python?
  • Потрясающая кнопка кнопки Selenium Python
  • Селен Python пропускает необходимые элементы
  • Python - лучший язык программирования в мире.