Сплит RSS RSS-строка с использованием Python

Я пытаюсь разобрать RSS-каналы Twitter и помещать информацию в базу данных sqlite, используя Python. Вот пример:

MiamiPete: today's "Last Call" is now up http://bit.ly/MGDzu #stocks #stockmarket #finance #money 

Я хочу создать один столбец для основного контента ( Miami Pete…now up ), один столбец для URL ( http://bit.ly/MGDzu ) и четыре отдельных столбца для хэштегов (акции, фондовый рынок, финансы, деньги). Я играю вокруг, как это сделать.

Любой совет будет очень благодарен!

PS Некоторый код, с которым я играл, ниже – вы можете видеть, что я пытался сначала создать переменную, называемую «tiny_url», и расщепить ее, что она действительно делает, но эта слабая попытка не приближается к решению проблемы отмечалось выше. 🙂

 def store_feed_items(id, items): """ Takes a feed_id and a list of items and stored them in the DB """ for entry in items: c.execute('SELECT entry_id from RSSEntries WHERE url=?', (entry.link,)) tinyurl = entry.summary ### I added this in print tinyurl.split('http') ### I added this in if len(c.fetchall()) == 0: c.execute('INSERT INTO RSSEntries (id, url, title, content, tinyurl, date, tiny) VALUES (?,?,?,?,?,?,?)', (id, entry.link, entry.title, entry.summary, tinyurl, strftime("%Y-%m-%d %H:%M:%S",entry.updated_parsed), tiny )) 

4 Solutions collect form web for “Сплит RSS RSS-строка с использованием Python”

Похоже, что ваш дизайн, основанный на данных, является довольно ошибочным. Если все ваши записи не содержат текстовую часть, URL и до 4 тегов, это не сработает.

Вам также нужно отделить сохранение от db от разбора. Анализ может быть легко выполнен с помощью regexep (или даже строковых методов):

 >>> s = your_string >>> s.split() ['MiamiPete:', "today's", '"Last', 'Call"', 'is', 'now', 'up', 'http://bit.ly/MGDzu', '#stocks', '#stockmarket', '#finance', '#money'] >>> url = [i for i in s.split() if i.startswith('http://')] >>> url ['http://bit.ly/MGDzu'] >>> tags = [i for i in s.split() if i.startswith('#')] >>> tags ['#stocks', '#stockmarket', '#finance', '#money'] >>> ' '.join(i for i in s.split() if i not in url+tags) 'MiamiPete: today\'s "Last Call" is now up' 

Тем не менее, дизайн с одной таблицей db, вероятно, должен пойти.

Кроме того, вы можете анализировать свои строки с помощью регулярных выражений:

 >>> s = (u'MiamiPete: today\'s "Last Call" is now up http://bit.ly/MGDzu ' '#stocks #stockmarket #finance #money') >>> re.match(r'(.*) (http://[^ ]+)', s).groups() (u'MiamiPete: today\'s "Last Call" is now up', u'http://bit.ly/MGDzu') >>> re.findall(r'(#\w+)', s) [u'#stocks', u'#stockmarket', u'#finance', u'#money'] 

У Twitter есть api, который может быть проще для вас использовать здесь, http://apiwiki.twitter.com/Twitter-API-Documentation .

Вы можете получить результаты как JSON или XML и использовать одну из многочисленных библиотек Python для анализа результатов.

Или, если у вас есть RSS, есть парсингеры Python, например, http://www.feedparser.org/ .

Я бы настоятельно рекомендовал использовать API Twitter. На самом деле есть два API: один для основного сервера Twitter и один для поискового сервера. Они используются для разных вещей.

Вы можете найти пример кода, pytwitter на svn. Добавьте simplejson, и вы можете делать очень мощные вещи за считанные минуты.

Удачи

  • Почему Python быстрее, чем C при конкатенации двух строк?
  • функция соединения массива numpy, состоящего из строки
  • str.replace, начиная со спины в пандах DataFrame
  • Ошибка: объект курсора не имеет атрибута _last_executed
  • строка байта и строка unicode. питон
  • Разделите строку на разрыв строки или период с помощью регулярных выражений Python
  • Примеры поиска строк в Python
  • Хороший способ превратить длинные строки в новую строку в Python?
  • Python - лучший язык программирования в мире.