gpt4 book ai didi

python - 在 Scrapy 类中定义附加方法

转载 作者:行者123 更新时间:2023-12-01 03:56:58 25 4
gpt4 key购买 nike

Scrapy 类是如何执行的以及如何向蜘蛛类添加其他方法?

例如,来自文档:

import scrapy

class DmozSpider(scrapy.Spider):
name = "dmoz"
allowed_domains = ["dmoz.org"]
start_urls = [
"http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",
"http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"
]

def parse(self, response):
filename = response.url.split("/")[-2] + '.html'
with open(filename, 'wb') as f:
f.write(response.body)

如果我想定义一些方法来轮询数据库或其他东西,我该怎么做,为什么?

最佳答案

让我们看一下以下用例 - 从数据库获取要爬网的 URL。为此,您需要使用 start_requests() method 而不是 start_urls .

示例代码(直接使用MySQLdb驱动程序):

import MySQLdb
import scrapy

class DmozSpider(scrapy.Spider):
name = "dmoz"
allowed_domains = ["dmoz.org"]

def start_requests(self):
db = MySQLdb.connect(host="host", user="user" ...)
cursor = db.cursor()

cursor.execute("SELECT url from url_table")
requests = [scrapy.Request(url=row[0]) for row in cursor.fetchall()]

cursor.close()

return requests

def parse(self, response):
filename = response.url.split("/")[-2] + '.html'
with open(filename, 'wb') as f:
f.write(response.body)

关于python - 在 Scrapy 类中定义附加方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37286195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com