Красивый суп - Не могу найти теги - PullRequest
0 голосов
/ 11 марта 2012

Страница: http://item.taobao.com/item.htm?id=13015989524
Вы можете увидеть ее исходный код.

В исходном коде существует следующий код

<a href="http://item.taobao.com/item.htm?id=13015989524" target="_blank">

Но когда я использую BeautifulSoup для чтенияИсходный код и выполните следующее

soup.findAll('a', href="http://item.taobao.com/item.htm?id=13015989524")

Возвращает [] пусто.Что он возвращает '[]'?

Ответы [ 2 ]

1 голос
/ 11 марта 2012

Насколько я вижу, тег <a>, который вы пытаетесь найти, находится внутри тега <textarea>.BS не анализирует содержимое <textarea> как HTML, и это правильно, так как <textarea> не должен содержать HTML.Короче говоря, эта страница делает что-то отрывочное.

Если вам действительно нужно это получить, вы можете «обмануть» и снова проанализировать содержимое <textarea> и искать в них:

import urllib
from BeautifulSoup import BeautifulSoup as BS

soup = BS(urllib.urlopen("http://item.taobao.com/item.htm?id=13015989524"))

a = []
for textarea in soup.findAll("textarea"):
    textsoup = BS(textarea.text)  # parse the contents as html
    a.extend(textsoup.findAll("a", attrs={"href":"http://item.taobao.com/item.htm?id=13015989524"}))

for tag in a:
    print tag

# outputs
# <a href="http://item.taobao.com/item.htm?id=13015989524" target="_blank"><img ...
# <a href="http://item.taobao.com/item.htm?id=13015989524" title="901 ...
0 голосов
/ 11 марта 2012

Используйте словарь для хранения атрибута:

soup.findAll('a', {
  'href': "http://item.taobao.com/item.htm?id=13015989524"
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...