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并没有在显示其他档案
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)
这样就可以了~
楼主: boboye (me)   2020-05-08 15:53:00
https://imgur.com/a/IityCNl 看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
https://imgur.com/2mEP6SH 就看你找到他 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