作者GreatDaiDai (DaiDai)
看板Python
標題[問題] 程式碼問題
時間Mon Mar 16 13:56:06 2020
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這個函數?
請大大指教,感謝~~
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 117.56.12.220 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1584338168.A.F84.html
1F:→ darama: 1. variable scope不一樣 03/16 14:47
2F:→ darama: 2. 他main有註解這個func的用途 你再看看吧 03/16 14:49
3F:→ DeepLearning: 爬文可以考慮 PyPtt 爬得比較快 03/16 17:57
5F:→ GreatDaiDai: 感謝!但我比較想用懂為什麼 03/16 20:11
6F:→ alvinlin: 1. 第29行是副程式,71是主程式 03/16 21:33
7F:→ alvinlin: 副程式的變數在副程式跑完就不存在了但它跑完前return給 03/16 21:35
8F:→ alvinlin: 主程式了 03/16 21:35
9F:→ alvinlin: 2.def get_author_ids 這個副程式用set 集合去累加,當 03/16 21:37
10F:→ alvinlin: 文章的作者裡有特定字串的 03/16 21:37
11F:→ alvinlin: 但author = '' ,後面#已經被註釋掉了 03/16 21:38
12F:→ alvinlin: 所以要看書裡怎麼寫。 03/16 21:38
13F:→ alvinlin: 其實這段code我在書裡看過。 03/16 21:39
14F:→ alvinlin: 原書上的是沒有# 的。所以如有照原書的意思, 5566那個 03/16 21:46
15F:→ alvinlin: 只是讓你想去抓特定作者時用,但預設沒有去抓 03/16 21:46
16F:→ alvinlin: 所以。照原書的code是有關係啊。就是去抓div裡author的 03/16 21:48
17F:→ alvinlin: 字串,把不重複的作者全部列出來 03/16 21:48
18F:→ alvinlin: 補充1,所以,他們兩只是剛好變數名相同。 03/16 21:49
19F:→ alvinlin: 去跑debug mode就看得出來了 03/16 21:49
20F:→ alvinlin: 所以。71行需要寫啊,不然這個值不會寫入檔案 03/16 21:51
21F:→ alvinlin: 其實DeepLearning哥是專家,他哥CodingMan哥也是。 03/16 22:04
22F:→ alvinlin: 看起來是一本書裡第三和第五章都用同樣的副程式啦。有些 03/16 22:08
23F:→ alvinlin: 有被call有些沒有。這不重要啦。 03/16 22:08
24F:→ alvinlin: 簡單想看結果把副程式全部放回主程式一行一行跑就知道結 03/16 22:10
25F:→ alvinlin: 果了 03/16 22:10
26F:→ GreatDaiDai: 感謝A大!太詳細了! 03/17 10:02
27F:→ alvinlin: ^^ 03/17 20:15