gpt4 book ai didi

Python - 未定义全局名称

转载 作者:行者123 更新时间:2023-11-28 22:35:18 25 4
gpt4 key购买 nike

我保证我已经通读了这个问题的其他版本,但我找不到与我的情况相关的版本。如果有的话,我很抱歉,我已经盯着这个看了几个小时了。

我一直在玩这个,实际上在一个版本上得到了结果,所以知道它很接近。

“start_URLs”变量被定义为函数之前的列表,但出于某种原因未在全局/模块级别注册。

这是确切的错误:对于 start_urls 中的 listing_url_list:NameError: 全局名称 'start_urls' 未定义

import time
import scrapy
from scrapy.http import Request
from scrapy.selector import Selector
from scrapy.spiders import CrawlSpider, Rule
from scraper1.items import scraper1Item

from scraper1 import csvmodule

absolute_pos = './/*[@id="xpath"]/td/@class'

class spider1(CrawlSpider):
name = 'ugh'
allowed_domains = ["ugh.com"]
start_urls = [
"http://www.website.link.1",
"http://www.website.link.2",
"http://www.website.link.3"
]

def parse(self, response):
Select = Selector(response)
listing_url_list = Select.xpath('.//*[@id="xpath"]/li/div/a/@href').extract()
for listing_url_list in start_urls:
yield scrapy.Request(listing_url, callback=self.parselisting, dont_filter=True)

def parselisting(self, response):
ResultsDict = scraper1Item()
Select = Selector(response)
ResultsDict['absolute_pos'] = Select.xpath(absolute_pos).extract()
ResultsDict['listing_url'] = response.url
return ResultsDict

最佳答案

您需要修复您的 start_requests() 方法:

  • 您打算使用 listing_url_list 而不是 start_urls
  • 您打算使用 listing_url 而不是 listing_url_list 作为循环变量
  • 无需实例化Selector - 使用response.xpath() shortcut直接

固定版本:

def parse(self, response):
listing_url_list = response.xpath('.//*[@id="xpath"]/li/div/a/@href').extract()
for listing_url in listing_url_list:
yield scrapy.Request(listing_url, callback=self.parselisting, dont_filter=True)

附带说明一下,我认为您不需要 CrawlSpider,实际上可以使用常规 scrapy.Spider ,因为您实际上并没有将 rules 与链接提取器一起使用。

关于Python - 未定义全局名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38278026/

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