2013-02-14 2 views
0

Я использую BeautifulSoup (BS4) для создания инструмента скребка, который позволит мне вытащить имя продукта с любой страницы продукта TopShop.com, которая находится между тегами «h1». Не могу понять, почему код, который я написал, не работает!Скремблирование имен продуктов с помощью BeautifulSoup

from urllib2 import urlopen 
from bs4 import BeautifulSoup 
import re 

TopShop_URL = raw_input("Enter a TopShop Product URL") 
ProductPage = urlopen(TopShop_URL).read() 

soup = BeautifulSoup(ProductPage) 

ProductNames = soup.find_all('h1') 

print ProductNames 
+0

Одна из проблем заключается в том, что ваш код генерирует SyntaxError на последней строке: http://ideone.com/ByfJ7K – bernie

+1

Как «не работает»? Как результаты, которые вы видите, отличаются от ожидаемых? – bernie

+0

@bernie не видит синтаксическую ошибку на моем конце. Ожидание очистки данных между тегами H1, но выше, похоже, ничего не возвращает. Я очень новичок в Python, нахожу свои ноги. –

ответ

2

я получить эту работу с помощью запросов()

from bs4 import BeautifulSoup 
import requests 

content = requests.get("TOPShop_URL").content 
soup = BeautifulSoup(content) 
product_names = soup.findAll("h1") 
print product_names 
+2

Предполагается, что существует только один тег h1 – Greg

+0

Я изменил свой код, чтобы разрешить несколько h1 – boblefrag

+0

Thx для вашей помощи. Я попробовал это, но мне сказали, что мне нужен внешний парсер (lxml или html5lib). Я дам этот выстрел и посмотрю, как это происходит. Очень ценю вашу помощь! –

0

Ваш код правильный, но проблема в том, что DIV, который включает в себя название продукта динамически генерируется с помощью JavaScript. Чтобы иметь возможность успешно проанализировать этот элемент, вы должны использовать Selenium или аналогичный инструмент, который позволит вам анализировать веб-страницу после полной загрузки dom.

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