作者bckkt (bckkt)
看板Python
标题[问题] python爬虫,设定driver很慢
时间Thu Feb 22 16:39:35 2018
原本使用requests.get抓网页原始码,但是抓不完整
後来使用PhantomJS花了7~8秒抓到了完整的原始码
不过弹出
Selenium support for PhantomJS has been deprecated, please use headless
所以最後用chrome并使用headless模式
1 from selenium import webdriver
2 from selenium.webdriver.chrome.options import Options
3 chrome_options = Options()
4 chrome_options.add_argument('--headless')
5 driver = webdriver.Chrome(chrome_options=chrome_options)
6 driver.get("
http://goo.gl/iuh5tS")
成功抓到更深的内容,但是执行第5行很慢很慢
大概要花7秒(用PhantomJS设定driver也是7~8秒)
不知有没有什麽方法能够快一点,谢谢各位大大
想说用另一个想法试试,打开CHROME的开发者工具,看一下Network底下的XHR
发现
https://imgur.com/CVoIpjB
约略每3秒会弹出一个请求,查了一下
1.AJAX的一种常见用法是使用AJAX载入JSON资料,然後在浏览器端渲染。如果能直接抓取
到JSON数据,会比HTML更容易解析。
2.XMLHttpRequest 缩写为 XHR
3.Type为xhr,这就是一个Ajax 请求
4.其中Request Headers 中有一个信息为X-Requested-With:XMLHttpRequest,这就标记了
此请求是Ajax请求。
5.发现这是一个POST类型的请求,请求连结是
GetGameData.ashx?r=1519301370235,也看到了json格式的资料
参数为r,r一直变动,查了一下,r的产生是new Date().getTime()
直接对这些连结opon in new tab打开都空白
目前死在这边,如果r有规律的话就轻松了,直接打开页面都是空白,json什麽的都没有
不知道开发者工具是怎麽侦测这些r的...
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.37.187.76
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1519288777.A.104.html
※ 编辑: bckkt (114.37.187.76), 02/22/2018 21:27:20
※ 编辑: bckkt (114.37.187.76), 02/22/2018 21:47:27
※ 编辑: bckkt (114.37.187.76), 02/22/2018 21:51:38
1F:推 s860134: 自己发 ajax 不合你的需要吗 02/23 18:59
2F:→ bckkt: 後来发现用第一个方法 速度上就是硬伤 02/23 19:25
3F:→ bckkt: 研究才发现一直弹出的页面是Ajax请求 02/23 19:25
4F:→ bckkt: 所以想说从这条切入研究,但也没那麽简单,还在研究中就是了 02/23 19:26
5F:→ s860134: 但是你都知道是要多个时间参数,你自己生当钱时间就好了? 02/24 18:22
6F:→ Kazimir: 你用 time.time()的那个毫秒数拿去post可以吗? 02/24 18:34
7F:→ bckkt: 谢谢回应,我没试过但觉得不行,我生的时间跟他生的时间 02/24 21:41
8F:→ bckkt: 应该是不一样的时间 02/24 21:41
9F:→ bckkt: form data还有个变数gidGroup,这变数也是变动很大的 02/24 21:43
10F:→ bckkt: 今天改用按键精灵去抓json,想说丢到某处之後,再分解json 02/24 21:44
11F:→ bckkt: 分解好的资料,再看是要丢到EXCEL,还是怎样呈现的,再看看 02/24 21:46
12F:推 Kazimir: 不是 我有去试JS那个func 是1970到现在的毫秒数 02/24 21:59
13F:推 Kazimir: 所以python这个产出来应该是一样的东西才对 02/24 22:01
14F:→ bckkt: 我试试 02/24 22:02
15F:→ bckkt: 加上header来请求,网页是空白 02/24 22:26
16F:→ bckkt: 我来研究一下form data的gidGroup是怎麽产生的好了 02/24 22:26
17F:→ bckkt: 下次连form data一起丢 02/24 22:27
18F:→ bckkt: 直接复制最近一个gidGroup,连着其他data一起丢,出现了!! 02/24 22:36
19F:→ bckkt: 但不知道gidGroup怎麽产生的,等这个变数搞懂,就可以爬了 02/24 22:37
20F:→ bckkt: 我发现不用丢gidGroup,json也会出现耶,太神奇了 02/24 22:41
21F:→ bckkt: 谢谢你们提醒我试试直接取得时间直接post 02/24 22:43