Hello,

This is my first python script, so I could use a little bit of help here. :)

I'm using the 'Universal Feed Parser' (http://feedparser.org/), and I have a list of feed URLs in a database which I would like to pull out and go through each of them. I am also using the ADOdb database module, as I am familier with it (in PHP .. however, it is pretty similar ..)

Here's what I have so far, the only thing this does is pulls the URLs out of the database, and prints them:

#!/usr/bin/env python

import MySQLdb
import adodb
import feedparser

conn = adodb.NewADOConnection('mysql')
conn.Connect('localhost','root','dadada','db');
cursor = conn.Execute('SELECT feed_url FROM feed_urls')

while not cursor.EOF:
    for row in cursor.fields:
        print row
    cursor.MoveNext()

cursor.Close()
conn.Close()

As I said, this above code works perfectly. However, I want to take that output, and put it in something like this:

while not cursor.EOF:
    for row in cursor.fields:
        d = feedparser.parse(FEED_URL_HERE)  <-- This is where I need the output of the db results to appear

So, basically .. the above code is calling a function from the 'Universal Feed Parser' module, which takes in a url .. basically, when it executes, I want python to read it like this:

d = feedparser.parse('http://www.url.com/to/rss.feed')

I know it has got to be something simple. I'd definitely appreciate some help on this. Thank you very much :)

Recommended Answers

forgive me if I am saying something dumb, but is the output you need being produced by this code

#!/usr/bin/env python

import MySQLdb
import adodb
import feedparser

conn = adodb.NewADOConnection('mysql')
conn.Connect('localhost','root','dadada','db');
cursor = conn.Execute('SELECT feed_url FROM feed_urls')

while not cursor.EOF:
    for row in cursor.fields:
        print row
    cursor.MoveNext() …
Jump to Post

I am pretty new to python(and programming) but this might work

while not cursor.EOF:
    for row in cursor.fields:
        url = row
        print row
    cursor.MoveNext()

now you should be able to place the varialble url in your function. but the variable url will be changed everytime you loop.

Jump to Post

All 6 Replies

forgive me if I am saying something dumb, but is the output you need being produced by this code

#!/usr/bin/env python

import MySQLdb
import adodb
import feedparser

conn = adodb.NewADOConnection('mysql')
conn.Connect('localhost','root','dadada','db');
cursor = conn.Execute('SELECT feed_url FROM feed_urls')

while not cursor.EOF:
    for row in cursor.fields:
        print row
    cursor.MoveNext()

cursor.Close()
conn.Close()

if so what part of that code is producing the output?

Yes, this snippet actually works. The output is being produced with this line:

print row

'row' is the variable holding the data.

I've tried just doing this:

while not cursor.EOF:
    for row in cursor.fields:
        d = feedparser.parse(row)  <-- This is the variable (row)

..however, that doesn't work.

forgive me if I am saying something dumb, but is the output you need being produced by this code

#!/usr/bin/env python

import MySQLdb
import adodb
import feedparser

conn = adodb.NewADOConnection('mysql')
conn.Connect('localhost','root','dadada','db');
cursor = conn.Execute('SELECT feed_url FROM feed_urls')

while not cursor.EOF:
    for row in cursor.fields:
        print row
    cursor.MoveNext()

cursor.Close()
conn.Close()

if so what part of that code is producing the output?

I am pretty new to python(and programming) but this might work

while not cursor.EOF:
    for row in cursor.fields:
        url = row
        print row
    cursor.MoveNext()

now you should be able to place the varialble url in your function. but the variable url will be changed everytime you loop.

edit adeed later//

Sorry I should have tested that before I posted, I doesn't seem to work the way I thought it would :-(

Hi there,

Thanks for your replies.

The repr function seems to be useful.. Here's my exact problem though:

while not cursor.EOF:
    for row in cursor.fields:
        str1 = repr(row)
        #print str1    #this line works .. if I take out the code below from above cursor.MoveNext()

        d = feedparser.parse(str1)
        d.feed.title

        print d.feed.title
        print "-----------------------------"

    cursor.MoveNext()

If you see the line d = feedparser.parse(str1), I believe this is where the error is occuring. If I simply do print str1, it prints the variable. I just need the variable to be accessable within the feedparser.parse function.

Here's the error I get with the above code:

[root@localhost feedparser]# ./parse.py
Traceback (most recent call last):
  File "./parse.py", line 17, in ?
    d.feed.title
  File "/home/matt/feedparser/feedparser.py", line 184, in __getattr__
    raise AttributeError, "object has no attribute '%s'" % key
AttributeError: object has no attribute 'title'

I believe that it is simply not able to access the url contained in the variable (hence the no 'title' attribute)..

Any ideas? This has been bugging me for quite a while... :) Again, thank you for your time!

Ah, you know what .. :) It turns out that the code that I thought was wrong, was actually right (boy did I think Python was extremely complex there for a few moments :)). I was simply not reading the values returned from Universal Feed Parser correctly.

Thank you for your help!

Be a part of the DaniWeb community

We're a friendly, industry-focused community of 1.20 million developers, IT pros, digital marketers, and technology enthusiasts learning and sharing knowledge.