【问题标题】:Scrapy Piplines deal with dataScrapy Piplines 处理数据
【发布时间】:2018-09-05 19:18:01
【问题描述】:

我想用scrapy写一个爬虫,爬虫文件、item文件、piplines文件等都写好后,想把数据存入数据库,但是发现item['url的数据类型']其实是字符串类型,字符串包含列表,里面的数据我取不到,也没找到问题出在哪里。

import pymysql
from . import settings


class JumiaspiderPipeline(object):

def __init__(self):
    self.conn=pymysql.connect(
        host=settings.MYSQL_HOST,
        db=settings.MYSQL_DBNAME,
        user=settings.MYSQL_USER,
        passwd=settings.MYSQL_PASSWORD,
        charset='utf8',
        use_unicode=False
    )
    self.cursor=self.conn.cursor()

def process_item(self, item, spider):
    self.insertdata(item)
    return item

def insertdata(self,item):
    sql="insert into jumia_scrapy (url) values (" +item['url']+")"
    print(sql)
    print(type(item['url'])
    self.cursor.execute(sql)
    self.conn.commit()

为什么item['url'] 的类型是str?我无法获取列表数据。

【问题讨论】:

  • 为什么不应该是str类型?

标签: python scrapy


【解决方案1】:

您应该在您的项目解析函数中分配 url,如下所示。

item["url"] = response.url

【讨论】:

  • 对不起,我想获取定期匹配的url,使用eval函数后我已经获取了url,谢谢。
【解决方案2】:

使用更简单的管道,如 SQLAlchemy 或基于 SQLAlchemy 的数据集。

数据集示例: SQLAlchemy/dataset how to specify created table

【讨论】:

  • 谢谢,我已经得到答案了。使用 sqlalchemy 是个好建议,我会尝试的,再次感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-22
  • 2012-06-28
  • 1970-01-01
相关资源
最近更新 更多