【问题标题】:Fixing a 'sqlite3.InterfaceError: Error binding parameter 0 - probably unsupported type. Try converting types or pickling.'修复 'sqlite3.InterfaceError: Error binding parameter 0 - 可能是不受支持的类型。尝试转换类型或酸洗。
【发布时间】:2013-11-17 13:26:46
【问题描述】:

我被 ScraperWiki 中的这个刮板卡住了。我只想要 dir='ltr' 的 ul 中的 li 元素中的文本。我每周运行这个脚本,句子可能彼此相似,但又是一个全新的句子。这就是为什么我想在我的数据中包含日期。

import scraperwiki
from mechanize import Browser
import lxml.html
from datetime import date, timedelta, datetime
from scraperwiki import sqlite

datum = date.today()
print datum

url = 'http://www.knvb.nl/nieuws/excessenav/actueel'
mech = Browser()
page = mech.open(url)
tree = lxml.html.fromstring(page.read())

# print tree.xpath('//ul[@dir="ltr"]/li') # access li elements
# print tree.xpath('//ul[@dir="ltr"]/li/text()') # access text in li elements

uitspraak = tree.xpath("//ul[@dir='ltr']/li/text()")
print uitspraak

# Saving data:
unique_keys = [ 'datum', 'uitspraak' ]
data = { 'datum':datum, 'uitspraak':uitspraak  }
scraperwiki.sql.save(unique_keys, data)

我收到以下错误:

Traceback (most recent call last):
  File "./code/scraper", line 28, in <module>
    scraperwiki.sql.save(unique_keys, data)
  File "/usr/local/lib/python2.7/dist-packages/scraperwiki/sqlite.py", line 34, in save
    return dt.upsert(data, table_name = table_name)
  File "/usr/local/lib/python2.7/dist-packages/dumptruck/dumptruck.py", line 301, in upsert
    self.insert(upsert=True, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/dumptruck/dumptruck.py", line 284, in insert
    self.execute(sql, values, commit=False)
  File "/usr/local/lib/python2.7/dist-packages/dumptruck/dumptruck.py", line 138, in execute
    raise self.sqlite3.InterfaceError(unicode(msg) + '\nTry converting types or pickling.')
sqlite3.InterfaceError: Error binding parameter 0 - probably unsupported type.
Try converting types or pickling.

如何让这个爬虫保存我的数据?

【问题讨论】:

    标签: python sqlite scraper scraperwiki screen-scraping


    【解决方案1】:

    这给出了一个结果列表,该列表是导致不支持类型错误的原因:

    tree.xpath("//ul[@dir='ltr']/li/text()")
    

    您必须改为存储每个结果:

    unique_keys = ['datum', 'uitspraak']
    for x in uitspraak:
      data = {'datum': datum, 'uitspraak': x}
      scraperwiki.sql.save(unique_keys, data)
    

    可能有更好的方法来存储多个结果 - 我以前从未使用过 scraperwiki 并且不知道 API。

    【讨论】:

    • 谢谢,这似乎可以完成这项工作。
    猜你喜欢
    • 1970-01-01
    • 2021-05-07
    • 1970-01-01
    • 2021-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-24
    • 1970-01-01
    相关资源
    最近更新 更多