Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to cast a variable in xpath python

from lxml import html
import requests

pagina = 'http://www.beleggen.nl/amx'
page = requests.get(pagina)
tree = html.fromstring(page.text)

aandeel = tree.xpath('//a[@title="Imtech"]/text()')
print aandeel

This part works, but I want to read multiple lines with different titles, is it possible to change the "Imtech" part to a variable?

Something like this, it obviously doesnt work, but where did I go wrong? Or is it not quite this easy?

FondsName = "Imtech"
aandeel = tree.xpath('//a[@title="%s"]/text()')%(FondsName)
print aandeel
like image 778
zazga Avatar asked Oct 10 '14 10:10

zazga


People also ask

How do you give variables in XPath?

The variable element introduces a variable to be used in XPath expression in the subtree of the parent to the variable element. The name of the variable. This is a xsd:QName. [XPath 1.0] expression which is the value assigned to the variable.

How do you declare a variable in selenium Python?

To declare a variable we use “=” to assign the value to a variable. Example: We will declare the following variable and print it.

How XPath works in Python?

Xpath is one the locators used in Selenium to identify elements uniquely on a web page. It traverses the DOM to reach the desired element having a particular attribute with/without tagname. OR & AND expression.


3 Answers

Almost...

FondsName = "Imtech"
aandeel = tree.xpath('//a[@title="%s"]/text()'%FondsName)
print aandeel
like image 28
dreyescat Avatar answered Sep 19 '22 12:09

dreyescat


You were almost right:

variabelen = [var1,var2,var3]
for var in variabelen:
    aandeel = tree.xpath('//a[@title="%s"]/text()' % var)
like image 158
Vincent Beltman Avatar answered Sep 21 '22 12:09

Vincent Beltman


XPath allows $variables and lxml's .xpath() method allows for supplying values for those variables as keyword arguments: .xpath('$variable', variable='my value')

Using your example, here's how you'd do it:

fonds_name = 'Imtech'
aandeel = tree.xpath('//a[@title="$title"]/text()', title=fonds_name)
print(aandeel)

See lmxl's docs for more info: http://lxml.de/xpathxslt.html#the-xpath-method

like image 37
OozeMeister Avatar answered Sep 21 '22 12:09

OozeMeister