Python BeautifulSoup Loop - PullRequest
       4

Python BeautifulSoup Loop

2 голосов
/ 30 декабря 2011

Благодаря этой доске мне удалось получить название и цену предмета, который я хочу, используя этот код:

import urllib2  
from BeautifulSoup import BeautifulSoup
import re

html = urllib2.urlopen('http://www.toolventure.co.uk/hand-tools/saws/').read()

soup = BeautifulSoup(html)
item = re.sub('\s+', ' ', soup.h2.a.text)
price = soup.find('p', '*price').text
price = re.search('\d+\.\d+', price).group(0)

print item, price

Это здорово, так как отлично возвращает один результат. Двигаясь дальше, я сейчас пытаюсь получить ВСЕ результаты на странице. Я играл с петлями, но я очень новичок в этом и не могу понять, как это делать.

Может ли кто-нибудь более знающий указать мне правильное направление?

Большое спасибо

1 Ответ

2 голосов
/ 30 декабря 2011

Я бы использовал findAll для этого:

soup = BeautifulSoup(html)

mostwant = {'class': 'productlist_mostwanted_item '}
griditem = {'class': 'productlist_grid_item '}

divs = soup.findAll(attrs = mostwant) + soup.findAll(attrs = griditem)

for product in divs:
    item = product.h2.a.text.strip()
    price = re.search('\d+\.\d+', product.findAll('p')[1].text).group(0)
    print "%s - (%s)" % (item, price)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...