Python Scrapy - populate start_urls from mysql(Python Scrapy - 从 mysql 填充 start_urls)
问题描述
我正在尝试使用 spider.py 从 MYSQL 表中使用 SELECT 填充 start_url.当我运行scrapy runpider spider.py"时,我没有得到任何输出,只是它没有错误地完成了.
I am trying to populate start_url with a SELECT from a MYSQL table using spider.py. When i run "scrapy runspider spider.py" i get no output, just that it finished with no error.
我已经在 python 脚本中测试了 SELECT 查询,并且 start_url 填充了 MYSQL 表中的条目.
I have tested the SELECT query in a python script and start_url get populated with the entrys from the MYSQL table.
spider.py
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()
推荐答案
更好的方法是覆盖 start_requests 方法.
A better approach is to override the start_requests method.
这可以查询您的数据库,很像populate_start_urls
,并返回一个请求 对象.
This can query your database, much like populate_start_urls
, and return a sequence of Request objects.
您只需要将 populate_start_urls
方法重命名为 start_requests
并修改以下几行:
You would just need to rename your populate_start_urls
method to start_requests
and modify the following lines:
for row in rows:
yield self.make_requests_from_url(row[0])
这篇关于Python Scrapy - 从 mysql 填充 start_urls的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Python Scrapy - 从 mysql 填充 start_urls
- 远程 mySQL 连接抛出“无法使用旧的不安全身份验证连接到 MySQL 4.1+"来自 XAMPP 的错误 2022-01-01
- 在SQL中,如何为每个组选择前2行 2021-01-01
- 导入具有可变标题的 Excel 文件 2021-01-01
- 如何使用 pip 安装 Python MySQLdb 模块? 2021-01-01
- 如何将 SonarQube 6.7 从 MySQL 迁移到 postgresql 2022-01-01
- 更改自动增量起始编号? 2021-01-01
- 使用 Oracle PL/SQL developer 生成测试数据 2021-01-01
- 以一个值为轴心,但将一行上的数据按另一行分组? 2022-01-01
- 如何将 Byte[] 插入 SQL Server VARBINARY 列 2021-01-01
- SQL 临时表问题 2022-01-01