Получение атрибутов в PyQuery? - программирование

Получение атрибутов в PyQuery?

Я использую PyQuery и хочу распечатать список ссылок, но не могу понять, как получить атрибут href от каждой ссылки в синтаксисе PyQuery.

Это мой код:

  e = pq(url=results_url)
  links = e('li.moredetails a')
  print len(links)
  for link in links:
    print link.attr('href')

Отпечатает 10, затем выдает следующую ошибку:

AttributeError: 'HtmlElement' object has no attribute 'attr'

Что я делаю неправильно?

4b9b3361

Ответ 1

PyQuery wraps lxml, поэтому вы используете ElementTree API для доступа к атрибутам:

e = pq(url=results_url)
for link in e('li.moredetails a'):
    print link.attrib['href']

В качестве альтернативы, чтобы использовать API PyQuery для любого найденного элемента, оберните элемент в вызов pq(), повторив способ использования jQuery $() или jQuery() для обертывания элементов DOM:

    print pq(link).attr('href')

или

    print pq(link).attr['href']

для более питонического способа доступа к атрибутам.

Вместо этого вы можете перебрать метод .items(), который вместо этого возвращает элементы PyQuery:

e = pq(url=results_url)
for link in e('li.moredetails a').items():
    print link.attr['href']

Ответ 2

Как и в jQuery, оберните эту ссылку вверх:

e = pq(url=results_url)
links = e('li.moredetails a')
print len(links)
for link in links:
    print pq(link).attr('href')