首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python从mysql中填充start_urls

问Python从mysql中填充start_urls
EN

Stack Overflow用户
提问于 2013-11-21 10:45:19
回答 1查看 4.7K关注 0票数 9

我正试图使用start_url spider.py从MYSQL表中填充一个SELECT。当我运行“刮伤运行蜘蛛spider.py”时,我没有得到任何输出,只是它没有出现错误。

我已经在python脚本中测试了SELECT查询,并且用MYSQL表中的entrys填充了start_url。

spider.py

代码语言:javascript
复制
from scrapy.spider import BaseSpider
from scrapy.selector import Selector
import MySQLdb


class ProductsSpider(BaseSpider):
    name = "Products"
    allowed_domains = ["test.com"]
    start_urls = []

    def parse(self, response):
        print self.start_urls

    def populate_start_urls(self, url):
        conn = MySQLdb.connect(
                user='user',
                passwd='password',
                db='scrapy',
                host='localhost',
                charset="utf8",
                use_unicode=True
                )
        cursor = conn.cursor()
        cursor.execute(
            'SELECT url FROM links;'
            )
    rows = cursor.fetchall()

    for row in rows:
        start_urls.append(row[0])
    conn.close()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-22 04:43:19

更好的方法是重写请求方法。

这可以像populate_start_urls一样查询数据库,并返回一系列请求对象。

只需将populate_start_urls方法重命名为start_requests并修改以下行:

代码语言:javascript
复制
for row in rows:
    yield self.make_requests_from_url(row[0])
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20118753

复制
相关文章

相似问题

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