gpt4 book ai didi

python - scrapy 的起始 URL 的 URL 生成器(仅读取第一个 URL),为什么?

转载 作者:太空宇宙 更新时间:2023-11-03 18:35:30 25 4
gpt4 key购买 nike

我使用 scrapy 作为网络抓取框架,并为一组公司抓取多个不同的域。我生成了一个 URL 生成器类,它读取包含公司的文件并为不同网页上的公司生成起始 URL(仅显示一个示例公司)。网络抓取工具对于第一条记录运行良好,但对于其他 URL 则无法运行。我已经测试了 URL 生成器,它返回所有 URL,但由于某种原因,这不起作用 start_urls = [start_url.company-site()]。有什么想法吗?

URL 生成器文件。

# -*- coding: utf-8 -*-
import os
import os.path

class URL(object):
P=[]

def read(self, filename):
with open(filename) as f:
for line in f:
field = line.split(',')
company = field[1].replace(" ", '+')
adress="{0}+{1}".format(field[5],field[11])
self.P.append("http://www.companywebpage.com/market-search?q={0}".format(company))

def company-site(self):
for i in self.P:
return i

蜘蛛文件

root = os.getcwd()
start_url = URL()
p = os.path.join(root, 'Company_Lists', 'Test_of_company.csv')
start_url.read(p)

class company-spider(BaseSpider):
name = "Company-page"
allowed_domains = ["CompanyDomain.se"]
start_urls = [start_url.company-site()]

最佳答案

替换

def company-site(self):
for i in self.P:
return i

def urls(self):
for url in self.P:
yield url

替换

start_urls = [start_url.company-site()]

start_urls = start_url.urls()

start_urls = start_url.P

因为 Spider.start_requests 看起来像这样:

def start_requests(self):
for url in self.start_urls:
yield self.make_requests_from_url(url)

关于python - scrapy 的起始 URL 的 URL 生成器(仅读取第一个 URL),为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21658809/

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