[问题] 程式码问题

楼主: GreatDaiDai (DaiDai)   2020-03-16 13:56:06
https://reurl.cc/yZgRXD
上面是用Python抓八卦版资讯,我不懂得是:
1.第29行有个articles = [] ,第71行也有个 articles = [],为什么?如果都是要储存
文章,那第71行的 articles = []需要写吗?
2.def get_author_ids(posts, pattern):
ids = set()
for post in posts:
if pattern in post['author']:
ids.add(post['author'])
return ids
这边完全看不懂,而且跟前面那个抓作者的资料有关系吗?他之前不就写:
author = '' # author = d.find('div', 'author').text if d.find('div',
'author') else ''
那不就用#后面那行就好了?为什么还要def get_author_ids这个函数?
请大大指教,感谢~~
作者: darama (DoRaMa)   2020-03-16 14:47:00
1. variable scope不一样2. 他main有注解这个func的用途 你再看看吧
作者: DeepLearning (深度学习)   2020-03-16 17:57:00
爬文可以考虑 PyPtt 爬得比较快https://github.com/PttCodingMan/PyPtt
楼主: GreatDaiDai (DaiDai)   2020-03-16 20:11:00
感谢!但我比较想用懂为什么
作者: alvinlin (林矜业)   2020-03-16 21:33:00
1. 第29行是副程式,71是主程式副程式的变量在副程式跑完就不存在了但它跑完前return给主程式了2.def get_author_ids 这个副程式用set 集合去累加,当文章的作者里有特定字串的但author = '' ,后面#已经被注释掉了所以要看书里怎么写。其实这段code我在书里看过。原书上的是没有# 的。所以如有照原书的意思, 5566那个只是让你想去抓特定作者时用,但默认没有去抓所以。照原书的code是有关系啊。就是去抓div里author的字串,把不重复的作者全部列出来补充1,所以,他们两只是刚好变量名相同。去跑debug mode就看得出来了所以。71行需要写啊,不然这个值不会写入档案其实DeepLearning哥是专家,他哥CodingMan哥也是。看起来是一本书里第三和第五章都用同样的副程式啦。有些有被call有些没有。这不重要啦。简单想看结果把副程式全部放回主程式一行一行跑就知道结果了
楼主: GreatDaiDai (DaiDai)   2020-03-17 10:02:00
感谢A大!太详细了!
作者: alvinlin (林矜业)   2020-03-17 20:15:00
^^

Links booklink

Contact Us: admin [ a t ] ucptt.com