2017-07-27 6 views
1

Das Problem betrifft Pythons CSS-Selektoren.Es konnte kein geeigneter CSS-Selektor erstellt werden

Ich kann einen Selektor nicht auf die richtige Weise schreiben, um das Element mit "Last" auszuwählen. Ich habe versucht, mit:

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

Elements, in dem das Element liegt:

<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> 
+1

ich nicht denke, das ist nur mit CSS möglich. [Hier] (https://stackoverflow.com/questions/5441680/css-selector-based-on-e-lement-text) ist ein Post darüber zu reden. –

+0

Leider ist es nicht möglich, einen Selektor für einen bestimmten Text zu erstellen (siehe https://stackoverflow.com/questions/1520429/is-there-a-css-selector-for-elements-containing-certain-text). Wie dem auch sei, du kannst mit '.pager a: last-child' das erreichen, was du willst? – joshhunt

+0

Mögliches Duplikat von [Gibt es einen CSS-Selektor für Elemente, die einen bestimmten Text enthalten?] (Https://stackoverflow.com/questions/1520429/is-there-a-css-selector-for-elements-containing-certain-text) – Hans

Antwort

2

Es ist auf jeden Fall möglich, und die Antwort lautet:

div.pager a:contains("Last") 

Und hier wird der Wähler in Python-Skript verwendet:

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) 

Ergebnisse:

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

Es ist unmöglich mit CSS, können Sie so mit vielleicht jquery verwenden. – pacanga

+0

Sie haben mich falsch verstanden. Ich habe es als CSS-Selektor im Python-Skript verwendet. – SIM

+0

Dann bearbeiten Sie bitte Ihren Beitrag, geben Sie einige Details dazu und fügen Sie ein Tag hinzu. Oder ich werde es bearbeiten ^^) – pacanga

1

Sie können die Artikel auswählen, mit [text*='blabla']. Sie können nur Attribute verwenden, um sie auszuwählen.

Aber wenn Sie den letzten auswählen möchten, können Sie :last-of-type oder last-child verwenden.

Verwandte Themen