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

作者: boboye (me)   2020-05-08 15:47:40
※ 引述《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並沒有在顯示其他檔案

顯示如上,請問這邊要在如何觀察呢?
謝謝
=======================================================================
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)
這樣就可以了~
作者: boboye (me)   2020-05-08 15:53:00
" target="_blank" rel="nofollow">
看reponse依然停留在原本
作者: TuCH (謬客)   2020-05-08 22:53:00
點了之後 他呼叫了openWindow() 可以從那邊找找一個小時好像快找到了 但我有點累了
作者: s860134 (s860134)   2020-05-08 22:59:00
有那麼辛苦嗎... 最差也可以錄封包@@另外 F12 開發者工具是可以插中斷點並在 console 印出中斷點 scope 的變數
作者: boboye (me)   2020-05-08 23:04:00
後來有熱心版友教學,當你點下詳細資料後 針對開啟的視窗快速按下ctrl + shift n就可以得到了我之前是一直停在原本的那頁,用抓封包這個也不賴 感謝各位熱心更正:chrome的 ctrl+shift+i
作者: TuCH (謬客)   2020-05-08 23:24:00
對網路知識還不是很熟 不知道有沒有人可以詳細講解一下
作者: s860134 (s860134)   2020-05-08 23:45:00
" target="_blank" rel="nofollow">
就看你找到他 openWindow 後可以一步一步的解析他怎麼弄出那個彈窗
作者: TakiDog (多奇狗)   2020-05-09 00:48:00
Charles Wireshark 去錄封包 用requests重現Selenium 真的除非超級難解的擋爬js或是太複雜場景...POST ajax_t108sb19 去parse onclick 中的value再拿著資料去POST ajax_t108sb22用debugger可以處理彈窗,或是直接複製openWindow在Console重新輸入,並且把它彈窗處理掉(X

Links booklink

Contact Us: admin [ a t ] ucptt.com