2016-04-06 3 views
1

Я пытаюсь получить продукты для проекта, я работаю с этой страницы: lazada, page ispection с помощью:Python BeautifulSoup не может читать Div тег

from bs4 import BeautifulSoup 
import urllib 
import re 
r = urllib.urlopen("http://www.lazada.co.id/catalog/?q=note+2").read() 
soup = BeautifulSoup(r,"lxml") 
letters = soup.findAll("span",class_=re.compile("product-card__name")) 
print type(letters) 
print letters[0] 

Когда я делаю это я я получаю следующую ошибку:

 
Traceback (most recent call last): 
    File "C:/Python27/project/testaja.py", line 9, in 
    print letters[0] 
IndexError: list index out of range 

Любые мысли по этому вопросу?

+1

Что делает 'print (r)' output? Код работает отлично для меня. –

+0

Этот код также отлично подходит для меня. Я подозреваю, что у вас либо нет доступа (возможно, вы слишком часто скрепили его, а сервер заблокировал вас - проверьте, является ли код заголовка 403) или по какой-то причине HTML никогда не отправлялся. –

ответ

0

Я думаю, что вы, возможно, слишком сильно пострадали от своей страницы, перейдите туда в браузере и посмотрите, что страница вернет в вашей сети.

Кроме того, вы можете изменить свой код, чтобы вы могли проверить заголовок ответа страницы, чтобы убедиться, что страница вернулась должным образом, прежде чем пытаться ее очистить. Я изменил ваш код, чтобы показать пример ниже:

from bs4 import BeautifulSoup 
import urllib 
import re 

r = urllib.urlopen("http://www.lazada.co.id/catalog/?q=note+2") 
header_code = r.getcode() 

if header_code == 200: 
    html = r.read() 
    soup = BeautifulSoup(html, "lxml") 
    letters = soup.findAll("span", {"class" : re.compile("product-card__name")}) 

    for letter in letters: 
     print letter 
else: 
    print("oops, something went wonky. Page response was: %s"% header_code) 
+0

Я пробую ваш код и получаю код заголовка 200, но все же не могу найти элемент span, который не возвращает ничего другого soution sir? btw im using python 2.7.1.1 в Windows 8
заблаговременно заблаговременно –

+0

Проверьте, как я изменил суп findAll в моем примере, посмотрите, работает ли это для вас. – bmcculley

+0

Хорошо, попробуйте сейчас. Я не понимал, что beautifulsoup 4 использует regex по-другому, чем версия 3. – bmcculley

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