如何把多个for循环的多个循环内容分别组合起来?

# -*- coding:utf-8 -*-
import requests,re,time


url = 'https://www.toutiao.com/c/user/article/?page_type=1&user_id=67287555792&max_behot_time=0&count=20&as=A1E5AAE6A908C3F&cp=5A69784C438F5E1&_signature=OnHSARAdYB7GCDh9vrFywDpx0h'
q_url = 'https://www.toutiao.com/'
header = {
    'referer':'https://www.toutiao.com/c/user/67287555792/',
    'user-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.119 Safari/537.36',
    'x-requested-with':'MLHttpRequest'
}
content = requests.get(url , headers = header).text
con = content.encode('utf-8').decode('unicode_escape')

def msg():
    title = re.findall('"title": "(.*?)",',con,re.S)
    times = re.findall('"behot_time": (.*?),',con,re.S)
    read = re.findall('"go_detail_count": (.*?),',con,re.S)
    con_url = re.findall('"source_url": "(.*?)"',con,re.S)
    source_url = re.findall('"display_url": "//(.*?)"',con,re.S)
    for i in range(1,21):
        for t in title:
            print(t)
        for m in times:
            print(m)
        for r in read:
            print(r)
        for c in con_url:
            cc = q_url + c
            print(cc)
        for s in source_url:
            print(s)
        con_print = '标题:' + t + '\n' + '时间:' + m + '\n' + '阅读量:' + r + '\n' + '链接:' + cc + '\n' '原文链接:' + s
        print(con_print)

    #print('标题:' + t + '\n' + '发布时间:' + m + '\n' '阅读量:' + r + '\n' '链接:' + c + '\n' + '原文链接:' + s)
#rint(con)
msg()

想实现的效果是这样的:

标题:年关难过,“被催族”的“悲催”何人能懂?
时间:1516864032
阅读量:8
链接:https://www.toutiao.com//item/6514899406209155591/
原文链接:www.123.com.cn/ydzx/128-536175.html

可是实际print(con_print)的时候是先把每一条都打印出来,然后用最后一条组合成。

怎么样让输出的结果是这种呢,就是标题、时间、阅读等都循环一遍,然后组合好,再进行下一次循环,在组合再循环...

标题:年关难过,“被催族”的“悲催”何人能懂?
时间:1516864032
阅读量:8
链接:https://www.toutiao.com//item/6514899406209155591/
原文链接:www.123.com.cn/ydzx/128-536175.html
阅读 5.6k
2 个回答

可以用zip函数,还可以看看itertools里面的zip_longest函数

a=list(range(5))
b=list('abcde')
for i in zip(a,b):
    print(i)
#输出:
(0, 'a')
(1, 'b')
...
#稍作修改成你想要的结果
for i,j in zip(a,b):
    print(str(i)+'\n'+j) #这里str(i)是因为整数i是不能和字符串相加的

别用response.text,换成response.json(),你就可以操作dict形式的结果了。

就像下面这样的:

{
    "login_status": false,
    "has_more": true,
    "next": {
        "max_behot_time": 1516455912
    },
    "page_type": 1,
    "message": "success",
    "data": [{
        "image_url": "//p1.pstatp.com/list/190x124/5b4b0005fed9c63a1454",
        "abstract": "太阳能发电站杂草丛生很难清理,中国工程师:放10000只羊就行",
        "tag": "news",
        "tag_url": "video",
        "title": "太阳能发电站杂草丛生很难清理,中国工程师:放10000只羊就行",
        "has_video": true,
        "chinese_tag": "视频",
        "source": "超级工程",
        "comments_count": 3745,
        "media_url": "/m1570427113937921/",
        "go_detail_count": 532127,
        "detail_play_effective_count": 761650,
        "source_url": "/item/6514979850942415364/",
        "item_id": "6514979850942415364",
        "article_genre": "video",
        "display_url": "//toutiao.com/group/6514979850942415364/",
        "behot_time": 1516886952,
        "group_id": "6514979850942415364", 
        ...
    }, ... ],
    "is_self": false
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题