换服务器后scrapy项目运行不了,yield不能发起第三层链接的Request, 报错StopIteration

发布于 2022-09-12 04:19:30 字数 1799 浏览 25 评论 0

  1. 我的一个爬虫项目在阿里服务器上Win2012系统运行了半年了,但换了腾讯服务器后换了Win10系统版本不一样,代码就运行不了。
  2. 我把代码缩减到最简单的形式
class WefspiderSpider(scrapy.Spider):
    name = 'wefunderspider'
    start_urls = ['https://wefunder.com/explore']


    def parse(self, response):
        campain_list_url = 'https://wefunder.com/explore_render_cards?'
        yield scrapy.FormRequest(
                              url = campain_list_url,
                              #meta = meta,
                              formdata = {"type":'fundraising',"page":'1',"first_offset":'0'},
                              callback = self.parse_campainlist_page)
        
    def parse_campainlist_page(self,response):
        campain_list = response.xpath("//div[contains(@class,'card effect__click ')]").extract()
        campain_num = len(campain_list)
        print(campain_num)   #调试通过
        print('roempost可行')
        campain_name = response.xpath("//div[contains(@class,'card effect__click')][%s]/a/@href"%1).extract()[0].split('/')[-1]
        campain_url = 'https://wefunder.com/' + campain_name +'/about'
        yield scrapy.Request(url = campain_url,callback = self.parse_campain_page,dont_filter=True)#meta = meta,
    
    def parse_campain_page(self,response):
        print('可访问')

我把代码一点点增加地跑,以上代码是能跑通的,但再加一层yield Request就不行,也就是爬取两层链接是可以的,但第三层就不行,继续添加以下代码

yield scrapy.Request(url = campain_url,callback = self.parse_campain_page,dont_filter=True)#meta = meta,

    def parse_campain_page(self,response):
        print('可访问')

报错StopIteration,并且伴随有奇怪的IndentationError。但代码本身没有对齐错误

image

以下是错误中对应的defer.py报错的代码行

image

找了好久没有类似的问题,不是请求被过滤了,而是不能解析,请大神拯救,

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

如果是同一套代码,那可能是 python 版本的问题?比如 python3.5 和 python3.6 就是一个大的版本,很多库是不兼容的。

戏剧牡丹亭 2022-09-19 04:19:30

找到问题了,是报错的那个Request请求对应的url 和之前发生了变化,虽然老url也能访问到对应网址,但实际上发生了重定向,scrapy 所以无法重定向过去。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文