首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ScraperWiki抓取PDF并获得未定义的错误

使用ScraperWiki抓取PDF并获得未定义的错误
EN

Stack Overflow用户
提问于 2014-03-31 05:31:19
回答 1查看 507关注 0票数 1

我试着用ScraperWiki刮这个PDF。当前代码给出的错误名称“data”未定义,但我收到的错误是

代码语言:javascript
复制
elif int(el.attrib['left']) < 647: data['Neighborhood'] = el.text

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

这是我的密码

代码语言:javascript
复制
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

我做错了什么?

此外,如能提出更好的解决办法,将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-11 21:24:55

除非您已经跳过了一些代码,否则data字典只有在与该行中的条件匹配的情况下才创建

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

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

快速的解决办法是总是创建一个空的数据字典。

代码语言:javascript
复制
for page in pages[0:1]:
    for el in page:
        data = {}
        if el.tag =="text":

等。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22754233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档