Scraperwiki scrape query: использование lxml для извлечения ссылок

Я подозреваю, что это тривиальный запрос, но надеюсь, что кто-то может помочь мне с запросом, который я получил, используя lxml в скребке, который я пытаюсь построить.

https://scraperwiki.com/scrapers/thisisscraper/

Я работаю построчно через урок 3 и до сих пор пытаюсь извлечь ссылку на следующую страницу. Я могу использовать cssselect для идентификации ссылки, но я не могу понять, как изолировать только атрибут href, а не весь тег привязки.

Кто-нибудь может помочь?

def scrape_and_look_for_next_link(url):
    html = scraperwiki.scrape(url)
    print html
    root = lxml.html.fromstring(html) #turn the HTML into lxml object
    scrape_page(root)
    next_link = root.cssselect('ol.pagination li a')[-1]

    attribute = lxml.html.tostring(next_link)
    attribute = lxml.html.fromstring(attribute)

    #works up until this point
    attribute = attribute.xpath('/@href')
    attribute = lxml.etree.tostring(attribute)
    print attribute

2 ответа

Решение

Селекторы CSS могут выбирать элементы, имеющие атрибут href, например, с помощью. a[href] но они не могут извлечь значение атрибута самостоятельно.

Когда у вас есть элемент из cssselect, вы можете использовать next_link.get('href') чтобы получить значение атрибута.

link = link.attrib['href']

должно сработать

Другие вопросы по тегам