我的蜘蛛在Scrapy中根本不进入yield scrapy.Request()

问题描述 投票:0回答:1

我在 Scrapy 中的蜘蛛遇到了问题。根据搜索键,我抓取了搜索结果页面并找到了链接。但下一个抓取结果页面的yield scrapy.Request() 根本不进入。 我从 main.py 调用蜘蛛,它从参数中获取搜索结果。这是main.py:

def run_spider(key, format):
    process = CrawlerProcess(settings={
        'FEED_FORMAT': format,
    })
    process.crawl(mySpider, search_key=key)
    process.start()


if __name__ == "__main__":
    parser = argparse.ArgumentParser(prog='main.py')
    parser.add_argument(
            '-s', '--key', required=True)
    parser.add_argument('-f', '--format', default='json', choices=['json', 'csv', 'xml'],
                            help='Output format for scraped data (default: json)')
    args = parser.parse_args()
    database_manager.create_tables(
                models=[SearchKey, SearchResult, Author, Book, BookAuthor])
    
    run_spider(args.key, args.format, path)

这是蜘蛛代码:

def start_requests(self):
    search_key = getattr(self, 'search_key', None)
    if search_key:
        url = base_url + f'?req={search_key}'
        new_search = SearchKey.create(search_key=search_key)
        search_id = new_search.id
        yield scrapy.Request(url, callback=self.parse, meta={'search_id': search_id})
def parse(self, response):
    # Extracting search results
    search_id = response.meta['search_id']
    # some scraping to get search result links
    for link in links: 
        url = base_url + link
        yield scrapy.Request(url, callback=self.parse_result) # this line is executed but it doesnt enters the parse_result() 

def parse_result(self, response):
    # Extracting result

我跟踪了代码,调用 parse_result 的行被执行,但根本没有进入该函数。

我检查了管道和设置,没有发现任何问题。

有人可以帮忙吗?

callback scrapy web-crawler
1个回答
0
投票

我找到了 允许的域

该网站有另一个域,在某些时候我将搜索网址更改为该域,但忘记在 allowed_domains 中更改它。

© www.soinside.com 2019 - 2024. All rights reserved.