7
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

3 Answers 3

10

You were almost right:

variabelen = [var1,var2,var3]
for var in variabelen:
    aandeel = tree.xpath('//a[@title="%s"]/text()' % var)
Sign up to request clarification or add additional context in comments.

3 Comments

This is what I was looking for, I assume it will also work with a dictionary?
You mean a dict instead of a list?
yes, I've got it working now, all thanks to you and a bit of improvising
7

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

Comments

4

Almost...

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.