无法创建适当的CSS选择器

时间:2017-07-27 21:59:10

标签: python css-selectors lxml

问题在于Python的CSS选择器。

我无法以正确的方式编写选择器以选择带有“Last”的项目。我尝试过:

div.pager a:[text*='Last']

该项目所在的元素:

<div class="pager"><a href="/search/1080p/" class="current">1</a> <a href="/search/1080p/t-23/">23</a> <a href="/search/1080p/t-255/">Last</a> </div>

2 个答案:

答案 0 :(得分:2)

绝对有可能,答案是:

div.pager a:contains("Last")

并且,这是python脚本中使用的选择器:

import requests
from lxml import html

main_link = "https://www.yify-torrent.org/search/1080p/"
base_link = "https://www.yify-torrent.org"

def get_links(item_link):
    response = requests.get(item_link).text
    tree = html.fromstring(response)
    next_page = tree.cssselect('div.pager a:contains("Next")')[0].attrib["href"]
    last_page = tree.cssselect('div.pager a:contains("Last")')[0].attrib["href"]
    print(base_link + next_page," ",base_link + last_page)

get_links(main_link)

结果:

https://www.yify-torrent.org/search/1080p/t-2/
https://www.yify-torrent.org/search/1080p/t-255/

答案 1 :(得分:1)

您无法使用[text*='blabla']选择项目。您只能使用属性来选择它们。

但无论如何,如果您想选择最后一个,可以使用:last-of-typelast-child