我试图从website获取一些数据(文本、url和视图)。在
我想先把它扔进破壳里,一切都很好。 但当我把同样的代码移到我的socrata_巴斯比,只有视图返回结果,文本和url为空。在
我的索克拉塔_巴斯比代码:
# socrata_base.py - basespider
from scrapy.spider import BaseSpider
from scrapy.selector import Selector
from socrata.items import SocrataItem
class MySpider(BaseSpider):
name = "socrata"
allowed_domains = ["opendata.socrata.com"]
start_urls = [
"https://opendata.socrata.com"
]
def parse(self, response):
hxs = Selector(response)
titles = hxs.xpath('//tr[@itemscope="itemscope"]')
items = []
for t in titles:
item = SocrataItem()
item["text"] = t.xpath("td[2]/div[1]/a/text()").extract()
item["url"] = t.xpath("td[2]/div[1]/a[@href]/@href").extract()
item["views"] = t.xpath("td[3]/span/text()").extract()
items.append(item)
return(items)
我的管道代码:
^{pr2}$如果我运行它,我将在这行代码中出现索引超出范围的错误:
self.cur.execute("insert into data (text, url, views) values(?,?,?)", (item['text'][0], item['url'][0], item['views'][0]))
如果我将代码改为:
self.cur.execute("insert into data (text, url, views) values(?,?,?)", ("text", "url", item['views'][0]))
它工作良好,我将有正确的“视图”结果存储。 所以我相信我没有得到文本和url的任何结果,这就是为什么我会有索引超出范围的错误。在
但是我在shell中测试同样的代码,所有的文本、url、视图都被更正返回。在
我的项目.py在
from scrapy.item import Item, Field
class SocrataItem(Item):
# define the fields for your item here like:
text = Field()
url = Field()
views = Field()
我的soc_bd.py公司公司名称:
import sqlite3
conn = sqlite3.connect("project.db")
cursor = conn.cursor()
cursor.execute('''CREATE TABLE data (text TEXT,url TEXT, views TEXT)''')
我不知道怎么了! 请帮忙!在
谢谢!!在
目前没有回答
相关问题 更多 >
编程相关推荐