arleigh418 / python-and-Taiwan-stock-market

Python 金融市場賺大錢聖經:寫出你的專屬指標
54 stars 17 forks source link

新聞僅20筆 #6

Open wst0310 opened 2 years ago

wst0310 commented 2 years ago

您好 依照更新的Yahoo新聞爬蟲 似乎最多只能取得前20筆左右 而該網頁算過並不只如此 不知問題所在

arleigh418 commented 2 years ago

Hi 您好,很高興您提出問題。

如同我在首頁的說明,我認為這是滾動式的網頁,算是蠻主流的方式,也算是防爬蟲的一種技術,雖非完全無法解,但可能無法讓爬蟲者過得太舒適。

何謂滾動式網頁? 可以把他理解成當你的瀏覽器提出請求時,他預設給你N篇新聞,剩下的新聞他會靠捕捉你的瀏覽器行為來給你額外的新聞。瀏覽器行為在我們的例子中就是滾動網頁。

您可以仔細的觀察,當您將滑鼠滾輪慢慢地往下滾,是不是有感覺到網頁卡了一下,他好像在load什麼內容? 這就是他捕捉你的操作行為,可能是滾到最後一篇新聞了,再額外給你另外N篇,當你再次滾玩,再給你N篇,直到他設置的上限,我記得上限是一個月的新聞。

不知道這樣您是否能夠理解,我們單純requests為什麼只有20篇,因為requests只是請求,不包含滑鼠滾動這個動作,自然不會觸發對方的系統給你多一點新聞。

或許還有其他解,但比較直接的解就是Selenium(類似用程式操作瀏覽器,模仿人的行為),模擬滾動到底的動作,再做requests解析,但如同首頁所述,這是比較進階的技術了,而且在爬蟲領域中,應該是真的無可解,萬不得以才會使用Selenium,因為他的速度及耗費的資源都比單純的requests差非常多。

Selenium技術您可以了解一下,若是有興趣鑽研爬蟲,這也算是必備的技術之一了。