繁体   English   中英

如果要在python中扩展类,如何导入另一个类并使用它?

[英]If you are extending a class in python how do you import another class and use it?

因此,我在玩Scrapy,这是一组允许您进行Web抓取的类,我想将一些数据放入数据库中,但是在扩展scrapy库的同时导入MySQL方法的工作很麻烦。

这是我的代码:

from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from scrapy.http import Request
import MySQLdb

class test(BaseSpider): #if i don't extend the class the MySQL works, but the Scrapy functionallity does not. 
    name = "test"
    allowed_domains = ["some-website.com"] #i know this is probibly not a real websit... just using it as an example. 
    start_urls = [
        "http://some-website.com",
    ]

    db = MySQLdb.connect(
       host = 'localhost',
       user = 'root',
       passwd = '',
       db = 'scrap'
    )
    #cursor = db.cursor()

    def parse(self, response):
       hxs = HtmlXPathSelector(response)
       for title in hxs.select('//a[@class="title"]/text()').extract():
            print title
            cursor.execute("INSERT INTO `scrap`.`shows` (id, title) VALUES (NULL , '"+title+"');")

我还是python的菜鸟,所以任何帮助将不胜感激。

您的体系结构出了点问题。

Spider的工作是解析页面,提取数据并将其放入Item中 将Item中的数据保存到数据库中是管道的工作:

项目管道的典型用法是:

  • 清理HTML数据
  • 验证抓取的数据(检查项目是否包含某些字段)
  • 检查重复项(并将其删除)
  • 将刮擦的物品存储在数据库中

因此,创建一个管道,将其路径放入settings.py中 尝试在该管道中使用数据库。

我认为您需要阅读本教程并查看示例

也许您应该定义self.cursor
这样,光标将可以在类方法上使用。 我不了解scrapy,但是您很可能应该在类test的__init__方法或get_cursor方法上执行此操作(可能应该将其重命名为Test)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM