python:for循环内嵌套for不执行迭代器

新手写了一个抓取网址的爬虫,但是发现 for url, favorites in zip(child_url_result, child_url_favorites_result):这个循环没有进入或者进入之后什么都没做就出去了,是迭代器在嵌套for循环内有什么规则吗?我试了上面的[a,b,c]循环可以进入并打印,请问是什么问题

class Crawler(object):
    def __init__(self):  # __init__,构造,初始化,实例化。
        self.child_url_no = 1
        self.top_videos_home = 'http://#####/v.php?category=rf&viewtype=basic&page='
        self.headers = {'Cookie': 'Cookie',
                   'User-Agent': 'User-Agent',
                   'Refer': 'Refer'
                   }
        self.child_url_list = []
        self.child_url_favorites_list = []

    def get_child_url_list(self, page_num):
        for x in range(page_num):  # 用page_num循环页数
            # 获取网页源码,用str(self.child_url_no)改变网址页码并遍历
            child_url_resp = requests.get(self.top_videos_home + str(self.child_url_no), verify=False, headers=self.headers)   
            #  获取两个迭代器用于筛选
            child_url_favorites_resp = child_url_resp
            child_url_resp.encoding = 'utf-8'
            child_url_favorites_resp.encoding = 'utf-8'
            time.sleep(2)
            #  建立正则表达规则
            child_url_object = re.compile(r'well-sm videos-text-align">\
        \
              <a href="(?P<child_url>.*?)">', re.S)
            child_url_result = child_url_object.finditer(child_url_resp.text)

            child_url_favorites_object = re.compile('Favorites:</span> (?P<child_url_favorites>.*?)      <br>', re.S)
            child_url_favorites_result = child_url_favorites_object.finditer(child_url_favorites_resp.text)
            for i in ['a', 'b', 'c']:  #  测试用
                print(i)  #正常打印
            for url, favorites in zip(child_url_result, child_url_favorites_result): #  该循环没有进入或者进入无动作
                self.child_url_list.append(url.group('child_url')) #  列表为空
                self.child_url_favorites_list.append(favorites.group('child_url_favorites')) #  列表为空
            self.child_url_no += 1 #  正常递增
  

if __name__ == '__main__':
    C9PV = Crawler()
    C9PV.get_child_url_list(3)


for url, favorites in zip(child_url_result, child_url_favorites_result):
该循环没有进入是因为child_url_result 或 child_url_favorites_result 两个列表有一个是空列表
你输出下child_url_result, child_url_favorites_result看看

zip()迭代的元素长度是由其中参数列表中长度最小的列表而定, 当其中列表有一个是空列表,zip()也就返回空的迭代

a = [1,2,3,4,5,6]
b = [7,8,9]
for v1, v2 in zip(a,b):
    print(v1,v2)

输出
1 7
2 8
3 9

循环3次, a中的4,5,6不会遍历

如果b是[]空列表

a = [1,2,3,4,5,6]
b = []
for v1, v2 in zip(a,b):
    print(v1,v2)

也就循环0次, 什么都不输出

因为你代码的网址没给全,没法测试,按目前的代码逻辑,你的循环是否进入无法判断,因为你没有对结果进行输出,你可以在这个循环前对child_url_result, child_url_favorites_result的长度进行打印,看一下是否有内容,也可以在循环结束后把self.child_url_list、self.child_url_favorites_list的长度输出一下,看看是否有内容

child_url_result, child_url_favorites_result 这两个是空呗