Hi there Anthony,

I'm pretty new to lxml but I pretty much thought I'd understood the basics. However, for some reason, my first attempt at using it is failing miserably.

Here's the deal:

I'm parsing specific page on Craigslist (
http://joplin.craigslist.org/search/rea) and trying to retreive the text of
each link on that page. When I do an "inspect element" in Firefox, a sample
anchor link looks like this:

<a href="/reb/5185592209.html" data-id="5185592209" class="hdrlnk">FIRST
OPEN HOUSE TOMORROW 2:00pm-4:00pm!!! (8-23-15)</a>

The code I'm using to try to get the link text is this:

from lxml import html
import requests

page = requests.get("http://joplin.craigslist.org/search/rea";)

You are missing something here that takes the page.content, parses it and creates variable called tree.

titles = tree.xpath('//a[@title="hdrlnk"]/text()')

And, your xpath is incorrect. Play with this in the interactive browser and you will be able to correct your xpath. I think you will notice from the example anchor link above that the attribute of the <a/> HTML elements you want to grab is "class", not "title". Therefore:

  titles = tree.xpath('//a[@class="hdrlnk"]/text()')

Is probably closer.

print titles

The last line, where it supposedly will print the text of each anchor
returns [].

I can't seem to figure out what I'm doing wrong. lmxml seems pretty
straightforward but I can't seem to get this down.

Again, I'd recommend playing with the data in an interactive console session. You will be able to figure out exactly which xpath gets you the data you would like, and then you can drop it into your script.

Good luck,

-Martin

--
Martin A. Brown
http://linux-ip.net/
_______________________________________________
Tutor maillist  -  [email protected]
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to