Re: [問題] 彈出式網頁如何爬取

看板Python作者 (肝爹)時間4年前 (2020/05/08 15:47), 4年前編輯推噓3(3016)
留言19則, 4人參與, 4年前最新討論串2/2 (看更多)
※ 引述《yahoo168 (努力就會有騷貨)》之銘言: : https://mops.twse.com.tw/mops/web/t108sb19_q1 : 輸入ticker(ex:1201)之後 : 有一個詳細資料可以打開,會跑出彈出式視窗,裡面有股利說明書 : 目前用selenium可以模擬開啟,但抓原始碼會回到原來的頁面 : 因為新開啟的這個頁面連網址都要沒有 是個彈出式的空白頁 : 請問該怎麼定位呢QQ 我自己拿這篇文練習我在開發人員工具看不到推文S大的request 只看到ajax_t1108sb19 import requests from bs4 import BeautifulSoup request_url = "https://mops.twse.com.tw/mops/web/ajax_t108sb19" headers={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.2 (KHTML, like Gecko) Chrome/22.0.1216.0 Safari/537.2'} form_data = { 'encodeURIComponent': '1', 'run': 'Y', 'step': '1', 'TYPEK': 'sii', 'year': '107', 'co_id': '2812', 'month': 'all', 'isnew': 'true', 'firstin': 'true' } response = requests.post(request_url, data=form_data,headers=headers) soup = BeautifulSoup(response.text) soup.find_all('input') 到這篇就卡住點選後也直接跳出視窗,但開發人員工具XHR並沒有在顯示其他檔案 https://imgur.com/a/WQA4S3R 顯示如上,請問這邊要在如何觀察呢? 謝謝 ======================================================================= import requests from bs4 import BeautifulSoup request_url = "https://mops.twse.com.tw/mops/web/ajax_t108sb22" headers = { 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36' } form_data = { 'encodeURIComponent':'1', 'firstin': 'true', 'TYPEK':'sii', 'year': '107', 'co_id': '2812', 'month': 'all', 'isnew': 'true', 'TYPEK': 'sii', 'isnew': 'true', 'DATE1': '20190812', 'SEQ_NO': '1', 'COMP': '2812', 'SKIND': 'G', 'step': '2' } response = requests.post(request_url, data=form_data,headers=headers) 這樣就可以了~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.251.15.8 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1588924062.A.EB9.html

05/08 15:53, 4年前 , 1F
https://imgur.com/a/IityCNl 看reponse依然停留在原本
05/08 15:53, 1F

05/08 22:53, 4年前 , 2F
點了之後 他呼叫了openWindow() 可以從那邊找
05/08 22:53, 2F

05/08 22:54, 4年前 , 3F
找一個小時好像快找到了 但我有點累了
05/08 22:54, 3F

05/08 22:59, 4年前 , 4F
有那麼辛苦嗎... 最差也可以錄封包@@
05/08 22:59, 4F

05/08 23:02, 4年前 , 5F
另外 F12 開發者工具是可以插中斷點並在 console 印出中
05/08 23:02, 5F

05/08 23:02, 4年前 , 6F
斷點 scope 的變數
05/08 23:02, 6F

05/08 23:04, 4年前 , 7F
後來有熱心版友教學,當你點下詳細資料後 針對開啟的視窗
05/08 23:04, 7F

05/08 23:05, 4年前 , 8F
快速按下ctrl + shift n就可以得到了我之前是一直停在原
05/08 23:05, 8F

05/08 23:06, 4年前 , 9F
本的那頁,用抓封包這個也不賴 感謝各位熱心
05/08 23:06, 9F

05/08 23:10, 4年前 , 10F
更正:chrome的 ctrl+shift+i
05/08 23:10, 10F

05/08 23:24, 4年前 , 11F
對網路知識還不是很熟 不知道有沒有人可以詳細講解一下
05/08 23:24, 11F

05/08 23:45, 4年前 , 12F
就看你找到他 openWindow 後
05/08 23:45, 12F

05/08 23:46, 4年前 , 13F
可以一步一步的解析他怎麼弄出那個彈窗
05/08 23:46, 13F

05/09 00:48, 4年前 , 14F
Charles Wireshark 去錄封包 用requests重現
05/09 00:48, 14F

05/09 00:49, 4年前 , 15F
Selenium 真的除非超級難解的擋爬js或是太複雜場景...
05/09 00:49, 15F

05/09 01:00, 4年前 , 16F
POST ajax_t108sb19 去parse onclick 中的value
05/09 01:00, 16F

05/09 01:00, 4年前 , 17F
再拿著資料去POST ajax_t108sb22
05/09 01:00, 17F

05/09 01:04, 4年前 , 18F
用debugger可以處理彈窗,或是直接複製openWindow
05/09 01:04, 18F

05/09 01:05, 4年前 , 19F
在Console重新輸入,並且把它彈窗處理掉(X
05/09 01:05, 19F
※ 編輯: boboye (114.39.28.145 臺灣), 05/09/2020 20:19:14
文章代碼(AID): #1UjGwUwv (Python)
文章代碼(AID): #1UjGwUwv (Python)