一定学好python 发表于 2020-6-28 11:13:13

输出字典是空的

import requests,re
#url ='https://maoyan.com/board/4'
def get_one_page(url):
        headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',
        'cookie' : '__mta=154442631.1593241361941.1593241556380.1593241598233.10; uuid_n_v=v1; uuid=2C6E1440B84411EAB7FDDF490BC946C07143E4D320224FAD8732A16C4F44A135; _csrf=9c3390568dd99073365b26b5ffcd129611ecfabbd07045a23cd8e278637f52a4; __guid=17099173.2087594309519851500.1593241358937.2642; Hm_lvt_703e94591e87be68cc8da0da7cbd0be2=1593241360; _lxsdk_cuid=172f495d53ac8-023df9ee10b5bf-376b4502-1fa400-172f495d53a6d; _lxsdk=2C6E1440B84411EAB7FDDF490BC946C07143E4D320224FAD8732A16C4F44A135; mojo-uuid=3c61b53790f9fbab0971a53489505d9b; mojo-session-id={"id":"2a22304ae494ac0049ab4e1180ef1cf0","time":1593241361961}; __mta=49531289.1593241413123.1593241413123.1593241413123.1; monitor_count=11; mojo-trace-id=16; Hm_lpvt_703e94591e87be68cc8da0da7cbd0be2=1593241598; _lxsdk_s=172f495d53c-f36-b5-fdd%7C%7C23'
        }
        response = requests.get(url,headers=headers)
        if response.status_code == 200:
                return response.text

'''def parse_one_page(html):
        pattern = re.compile('<dd>.*?>(.*?)</i>.*?data-src="(.*?)".*?name.*?a.*?>(.*?)</a>.*?star.*?>(.*?)</p>.*?releasetime.*?>(.*?)</p>.*?integer.*?>(.*?)</i>.*?fraction.*?>(.*?)</i>.*?</dd>',re.S)
       
        items = re.findall(pattern,html)
        for item in items:
                yield{
                        'indes':item,
                        'image':item,
                        'title':item,
                        'actor':item.strip() if len(item) > 3 else '',
                        'time' :item.strip() if len(item) > 5 else '',
                        'score':item.strip() +item.strip()
                }
'''

def main():
        url='https://maoyan.com/board/4'
        html = get_one_page(url)
        #print(html)

        pattern = re.compile('<dd>.*?>(.*?)</i>.*?data-src="(.*?)".*?name.*?a.*?>(.*?)</a>.*?star.*?>(.*?)</p>.*?releasetime.*?>(.*?)</p>.*?integer.*?>(.*?)</i>.*?fraction.*?>(.*?)</i>.*?</dd>',re.S)
       
        items = re.findall(pattern,html)
        for item in items:
                yield{
                        'indes':item,
                        'image':item,
                        'title':item.strip(),
                        'actor':item.strip(),
                        'time' :item.strip(),
                        'score':item+item,
                }
        a = yield       
        print(a)
main()

上面这个代码输出运行没有输出,或者我怎么输出yield这个字典呢。但是我如果在def main()里面直接输出items或者for itemin items: print item 都是有输出的。求大佬帮助啊

yifenyu 发表于 2020-6-28 11:27:38

函数yiled 之后是一个generator, 你可以for循环遍历它,然后在处理;
for item in main():
    print(item)
或者 result = list(main() ),得到所有字典的列表

一定学好python 发表于 2020-6-28 12:08:10

yifenyu 发表于 2020-6-28 11:27
函数yiled 之后是一个generator, 你可以for循环遍历它,然后在处理;
for item in main():
    print(it ...

十分感谢,确实是这样的。
页: [1]
查看完整版本: 输出字典是空的