【问题标题】:Scraping a PDF with ScraperWiki and getting an Error of not Defined使用 ScraperWiki 抓取 PDF 并获得未定义的错误
【发布时间】:2014-03-31 05:31:19
【问题描述】:

我正在尝试使用 ScraperWiki 抓取此 PDF。当前代码给了我一个错误,名称为“数据”未定义,但我在

上收到错误
elif int(el.attrib['left']) < 647: data['Neighborhood'] = el.text

如果我注释掉该行,我的 else 语句会出现同样的错误。

这是我的代码

import scraperwiki
import urllib2, lxml.etree
#Pull Mondays
url = 'http://www.city.pittsburgh.pa.us/police/blotter/blotter_monday.pdf'
pdfdata = urllib2.urlopen(url).read()
xmldata = scraperwiki.pdftoxml(pdfdata)
root = lxml.etree.fromstring(xmldata)
# how many pages in PDF
pages = list(root)
print "There are",len(pages),"pages"
# Test Scrape of only Page 1 of 29
for page in pages[0:1]:
    for el in page:
        if el.tag == "text":
            if int(el.attrib['left']) < 11: data = { 'Report Name': el.text }
            elif int(el.attrib['left']) < 317: data['Location of Occurrence'] = el.text
            elif int(el.attrib['left']) < 169: data['Incident Time'] = el.text
            elif int(el.attrib['left']) < 647: data['Neighborhood'] = el.text
            elif int(el.attrib['left']) < 338: data['Description'] = el.text
            else:
                data['Zone'] = el.text
                print data

我做错了什么?

也将不胜感激任何更好的解决方案的建议。

【问题讨论】:

    标签: python pdf python-3.x scraperwiki


    【解决方案1】:

    除非您跳过了一些代码,否则您的 data 字典只会在如果此行中的条件匹配时创建:

    if int(el.attrib['left']) &lt; 11: data = { 'Report Name': el.text }

    您在data 中设置值的所有其他行都依赖于它已经存在,因此如果第一个条件不匹配,您将获得NameError

    快速解决方法是始终创建一个空数据字典,例如

    for page in pages[0:1]:
        for el in page:
            data = {}
            if el.tag =="text":
    

    等等

    【讨论】:

      猜你喜欢
      • 2017-06-17
      • 1970-01-01
      • 1970-01-01
      • 2013-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-04
      • 1970-01-01
      相关资源
      最近更新 更多