[問題] 程式碼問題

作者: 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