Scrapy:如何爬取我从爬虫获得的URL?exceptions.NameError: 全局名称 'parse_detail' 未定义
我在练习 scrapy,有个问题想请教:
我想再次抓取我从爬虫那里得到的链接,但不知道该怎么做。
这是我的代码:
你可以看到,我抓取的链接会保存在参数:movie_descriptionTW_URL 中。
然后我写了 yield Request(movie_descriptionTW, parse_detail)
来把结果发送到一个函数:
def parse_detail(self, response):
print(response.url)
但是出现了一个错误:exceptions.NameError: global name 'parse_detail' is not defined
我该怎么解决这个问题呢?
请教教我!谢谢!
from scrapy.spider import Spider
from scrapy.selector import Selector
from yahoo.items import YahooItem
from scrapy.http.request import Request
class MySpider(Spider):
name = "yahoogo"
start_urls = ["https://tw.movies.yahoo.com/chart.html"]
def parse(self, response):
sel = Selector(response)
sites = sel.xpath("//tr")
items = []
for site in sites:
item = YahooItem()
ranking_list = site.xpath("td[@class='c1']/span/text()").extract()
movie_descriptionTW = site.xpath("(td[@class='c3']/*//a)[position() < last()-1]/text() | td[@class='c3']/a[1]/text() ").extract()
movie_descriptionTW_URL = site.xpath("(td[@class='c3']/*//a[2]/@href) | td[@class='c3']/a[1]/@href ").extract()
# crawl again!
yield Request(movie_descriptionTW, parse_detail)
if ranking_list:
items.append(item)
yield items
def parse_detail(self, response):
print(response.url)
1 个回答
0
使用 self.parse_detail
来调用类里面的方法,像下面这样:
for url in movie_descriptionTW_URL:
yield Request(url=url, callback=self.parse_detail)