0

这段代码:

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 中的所有标签,我不明白为什么。

4

2 回答 2

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']

经过测试,对我有用。

于 2012-05-24T10:06:58.293 回答
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']

(未测试)

于 2012-05-19T18:20:56.900 回答