作者boboye (肝爹)
看板Python
标题Re: [问题] 弹出式网页如何爬取
时间Fri May 8 15:47:40 2020
※ 引述《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://webptt.com/cn.aspx?n=bbs/Python/M.1588924062.A.EB9.html
2F:推 TuCH: 点了之後 他呼叫了openWindow() 可以从那边找 05/08 22:53
3F:→ TuCH: 找一个小时好像快找到了 但我有点累了 05/08 22:54
4F:→ s860134: 有那麽辛苦吗... 最差也可以录封包@@ 05/08 22:59
5F:推 s860134: 另外 F12 开发者工具是可以插中断点并在 console 印出中 05/08 23:02
6F:→ s860134: 断点 scope 的变数 05/08 23:02
7F:→ boboye: 後来有热心版友教学,当你点下详细资料後 针对开启的视窗 05/08 23:04
8F:→ boboye: 快速按下ctrl + shift n就可以得到了我之前是一直停在原 05/08 23:05
9F:→ boboye: 本的那页,用抓封包这个也不赖 感谢各位热心 05/08 23:06
10F:→ boboye: 更正:chrome的 ctrl+shift+i 05/08 23:10
11F:推 TuCH: 对网路知识还不是很熟 不知道有没有人可以详细讲解一下 05/08 23:24
13F:→ s860134: 可以一步一步的解析他怎麽弄出那个弹窗 05/08 23:46
14F:→ TakiDog: Charles Wireshark 去录封包 用requests重现 05/09 00:48
15F:→ TakiDog: Selenium 真的除非超级难解的挡爬js或是太复杂场景... 05/09 00:49
16F:→ TakiDog: POST ajax_t108sb19 去parse onclick 中的value 05/09 01:00
17F:→ TakiDog: 再拿着资料去POST ajax_t108sb22 05/09 01:00
18F:→ TakiDog: 用debugger可以处理弹窗,或是直接复制openWindow 05/09 01:04
19F:→ TakiDog: 在Console重新输入,并且把它弹窗处理掉(X 05/09 01:05
※ 编辑: boboye (114.39.28.145 台湾), 05/09/2020 20:19:14