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 这两个是空呗