Webscraper不会迭代

时间:2012-05-19 18:14:14

标签: python web-scraping beautifulsoup

此代码:

from bs4 import BeautifulSoup
from urllib2 import urlopen

f = urlopen("http://www.groupon.co.uk/").read()

bs = BeautifulSoup(f)

for tag in bs.find_all('ul', {'id': 'jCitiesSelectBox'}):
    print tag.li['onclick']

只打印出第一个标签,不打印出jCitiesSelectBox中的所有标签,我看不清楚原因。

2 个答案:

答案 0 :(得分:0)

你可能有向后选择器。每个文档只允许一个标记具有特定id。您指定的内容是“仅使用id="jCitiesSelectBox标记找到包含<ul>的标记”。

编辑:

您可能想要的是使用<li>查找标记内的所有id="jCitiesSelectBox"标记,例如:

cities_list = bs.find('ul', {'id': 'jCitiesSelectBox'})
for tag in cities_list.find_all('li'):
    print tag['onclick']

(未经测试)

答案 1 :(得分:0)

#!/usr/bin/python
# -*- coding: utf-8 -*-
from bs4 import BeautifulSoup
from urllib2 import urlopen

f = urlopen("http://www.groupon.co.uk/").read()

bs = BeautifulSoup(f)

f = urlopen("http://www.groupon.co.uk/").read()

bs = soup(f)

tags = bs.findAll('ul', attrs={'id' : 'jCitiesSelectBox'})
for tag in tags:
    lip = tag.findAll('li')
    for li in lip:
        print li['onclick']

经过测试,适合我。