找回密码
 立即注册

QQ登录

只需一步,快速开始

PropellerAds
Google-Bing-Mediago-Criteo开户
⚡️按条S5代理⚡️静态⚡️独享⚡️5G广告专用虚拟卡/U充值/高返点皇家代理IP⚡️#1性价比⚡️
Mediabuy⚡️玩家开户首选【鲁班跨境通-自助充值转账】FB/GG/TT❤️官方免费开户Affiliate 全媒体流量资源⚡️
Taboola/Outbrain /Bing⚡️一级代理开户投流-7*24h❤️人工在线【官方】❤️搜索套利买量投流开户独立站⚡️开户投放
Google FB TK游戏代投⚡️E.PN 虚拟卡⚡️BINOM TRACKER 60% OFF!比Adplexity还好用的Spy工具
ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理虚拟信用卡+独立站收款全球虚拟卡, 支持U充值
Facebook 批量上广告尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)FB 三不限源头 - 自助下户充值转款
各种主页、账单户、BM户(优势)IPCola原生住宅IP⚡️$1.8/条双ISPFB资源,账单户,分享户,国内一手TK加白户/二解户/FB海外户/GG老户
最大欧洲Nutra网盟BA找量 FB高权重耐操个号⚡️稳定过审FB企业户海外户,授信户,TK加白户联盟收款/海外资金下发/服贸结汇
✔Taboola海外户源头广告位出租虚拟卡返佣1%,国内持牌机构 
查看: 23201|回复: 16

[闲聊] [求教]Python怎么获取网页中js生成的数据?

[复制链接]

119

主题

2037

广告币

2608

积分

版主

名利权情牢是非成败空

积分
2608

社区QQ达人

发表于 2014-8-4 23:44:47 | 显示全部楼层 |阅读模式
Binom_AdvertCN
用Python写一个多(忽)说(略)的群发程序,现在遇到一个问题,打开的网页中包含一个js文件! A2 m. B" W3 }
  1. http://static.duoshuo.com/embed.js
复制代码
里面包含了一段参数,4 E5 {9 `5 |' @" u& Y( h( M+ `/ |
  1. h="cb_"+Math.round(Math.random()*1e6)
复制代码
生成6位的随机数字,谁知道我怎么获得这个数据?python的selenium模块效率太低,我要效率高的。
& G9 E: I* T5 [, O0 l* d4 C5 n. ~* u! e
& k$ l4 t/ t) c) y9 f请推荐一个模块或者是其他的什么语言, 最好是能快速上手的。
8 c! }! z/ ~  m2 z: y9 w. B8 x, y  n! `4 T/ P& N7 m& K4 L
另外最好能详细一点,不甚感激。
- A* v6 r& E: v+ z2 s
相关帖子
空
回复

使用道具 举报

0

主题

488

广告币

1280

积分

高级会员

积分
1280
发表于 2014-8-5 00:07:58 | 显示全部楼层
试试casperjs模块? 无界面浏览器 可以解析js , {' b9 i2 D0 L% h. h
官网有很详细文档
# H8 A8 k* ~) h' m
  1. http://casperjs.org/
复制代码

( q) m+ @- ^3 R$ \: a  s"CasperJS是一个开源的导航脚本处理和测试工具,基于PhantomJS(前端自动化测试工具)编写。"% n; [5 G1 p' w$ s& }
回复 支持 反对

使用道具 举报

54

主题

9

广告币

6010

积分

禁止访问

积分
6010
发表于 2014-8-5 08:27:04 | 显示全部楼层
  1. import random7 S1 F. ^  c8 q
  2. rand = random.randint(100000,999999)% D( s) @/ V' L" }5 c- s: ?
  3. print rand* n: G/ S1 }' ~* b& \
复制代码

& `6 ]/ \& I) C, N+ X' x9 D生成六位随机数, `8 F- a  ^: v' d! c+ a9 J& H
4 j' K1 m( }. I. a, A, `% ?

点评

我需要获取js文件中生成的随机数,不是自己生成一个随机数  详情 回复 发表于 2014-8-5 08:47
回复 支持 反对

使用道具 举报

119

主题

2037

广告币

2608

积分

版主

名利权情牢是非成败空

积分
2608

社区QQ达人

 楼主| 发表于 2014-8-5 08:47:35 | 显示全部楼层
阿百川 发表于 2014-8-5 08:27% S! n3 B6 s3 K$ N  G; G
生成六位随机数
" ~, o- S3 y" {. i% Z! J
我需要获取js文件中生成的随机数,不是自己生成一个随机数
空
回复 支持 反对

使用道具 举报

54

主题

9

广告币

6010

积分

禁止访问

积分
6010
发表于 2014-8-5 09:07:01 | 显示全部楼层
fatiery 发表于 2014-8-5 08:47
5 l/ A3 r& C% N4 M$ `" r- u  L  s我需要获取js文件中生成的随机数,不是自己生成一个随机数
) D0 c) _" F4 I# {. `& ]7 b/ p
这个只是随机生成的吧,又没什么验证9 G' j9 P+ m4 w7 Y+ U" f

7 e7 z+ F) e: l8 M+ z
  1. https://pypi.python.org/pypi/spynner
复制代码

3 M* G; t. G; Q' v- ~利用webkit解析js

点评

有验证的,我没写,这个是用get方式提交的我现在就是要获取参数5,参数5在 中生成  详情 回复 发表于 2014-8-5 09:18
回复 支持 反对

使用道具 举报

119

主题

2037

广告币

2608

积分

版主

名利权情牢是非成败空

积分
2608

社区QQ达人

 楼主| 发表于 2014-8-5 09:18:01 | 显示全部楼层
阿百川 发表于 2014-8-5 09:07
# O5 U# `$ ^- G+ l) t这个只是随机生成的吧,又没什么验证
4 s- o' f. c5 s0 C
有验证的,我没写,这个是用get方式提交的
  1. http://参数1.duoshuo.com/api/posts/create.jsonp?thread_id=参数2&parent_id=&nonce=参数3&message=参数4&repost=netease&v=140327&_method=POST&callback=DUOSHUO%5B'cb_参数5'%5D
复制代码
我现在就是要获取参数5,参数5在, X) B, h! r6 m* H" m
  1. http://static.duoshuo.com/embed.js
复制代码
中生成
# A- J, t, n8 h7 [0 p+ x
空
回复 支持 反对

使用道具 举报

54

主题

9

广告币

6010

积分

禁止访问

积分
6010
发表于 2014-8-5 09:33:04 | 显示全部楼层
fatiery 发表于 2014-8-5 09:180 u2 m9 |- Y7 S* Q, V! k
有验证的,我没写,这个是用get方式提交的我现在就是要获取参数5,参数5在
9 I/ b% N' |. W3 `7 J4 E' \8 p; H中生成
) f& D0 C  @* M ...
$ W/ G4 Y% X$ J# E2 i' ?9 y
不解析js不好搞,还是用spynner吧
回复 支持 反对

使用道具 举报

augustye 该用户已被删除
发表于 2014-8-5 09:34:50 | 显示全部楼层
方案1: 内嵌webkit模块运行那个网页(包括js文件),然后用webkit提供的API获取js空间中的变量值。, u3 n/ {' Z7 r! l( [

' c7 u. U1 m4 ~$ s方案2: 用你使用的语言重写那个js文件中的相关功能,如果你的程序是服务器端运行用nodejs可以省很多工作量$ q9 a  F; K9 _% i9 {

点评

方案1.执行效率比较低 方案2.重写js功能估计没用吧。必须要打开网页的时候,打开那个js,那个js应该是包含网页的相关数据的,然后数据应该已经返回到它的服务器上,我提交的时候和服务器上的数据比对,相同才可以提  详情 回复 发表于 2014-8-6 01:06
回复 支持 反对

使用道具 举报

10

主题

1314

广告币

1376

积分

高级会员

积分
1376
发表于 2014-8-5 22:25:44 | 显示全部楼层
也可以挂一个ghost.py, 一般做法就是跑个webkit 的内核,浏览器显示什么,你也就能得到什么

点评

ghost.py以及上面提到的一些,还有没有提到的比如phantomjs,我都搜索到然后测试了有些代码我看不懂,有些出错比如你说的ghost.py返回超时,无法下载网页的错误,打开百度就没问题。  详情 回复 发表于 2014-8-6 02:21
回复 支持 反对

使用道具 举报

119

主题

2037

广告币

2608

积分

版主

名利权情牢是非成败空

积分
2608

社区QQ达人

 楼主| 发表于 2014-8-6 00:59:48 | 显示全部楼层
我目前还在研究中,这个问题困扰我2天了。。。
空
回复 支持 反对

使用道具 举报

119

主题

2037

广告币

2608

积分

版主

名利权情牢是非成败空

积分
2608

社区QQ达人

 楼主| 发表于 2014-8-6 01:06:21 | 显示全部楼层
本帖最后由 fatiery 于 2014-8-6 01:26 编辑 , U* X& x7 L! `9 S& }9 _3 E  J
augustye 发表于 2014-8-5 09:34
# u6 t3 [  V; H. |/ H, f1 S方案1: 内嵌webkit模块运行那个网页(包括js文件),然后用webkit提供的API获取js空间中的变量值。3 [( v" D. [0 F( }% ?0 ?
8 p, {/ l" g( n& W% y, h
方案2: ...
6 A8 u* @7 g! q
方案1.研究中。。。
9 W% a" a  {! x9 Y方案2.重写js功能估计没用吧。必须要打开网页的时候,打开那个js,那个js应该是包含网页的相关数据的,然后数据应该已经返回到它的服务器上,我提交的时候和服务器上的数据比对,相同才可以提交成功。(我没学过js,这个是流程是我想象的,不是的话,请指出)
空
回复 支持 反对

使用道具 举报

119

主题

2037

广告币

2608

积分

版主

名利权情牢是非成败空

积分
2608

社区QQ达人

 楼主| 发表于 2014-8-6 02:21:54 | 显示全部楼层
darren 发表于 2014-8-5 22:25
) @- @2 X4 e3 x# ~5 ^也可以挂一个ghost.py, 一般做法就是跑个webkit 的内核,浏览器显示什么,你也就能得到什么 ...

: M: L& z( k( j, s# aghost.py以及上面提到的一些,还有没有提到的比如phantomjs,我都搜索到然后测试了有些代码我看不懂,有些出错比如你说的ghost.py
  1. from ghost import Ghost
    ( q+ Q4 a. ~& J( k2 x' h
  2. ghost = Ghost()
    ) ?+ M- ^9 ]6 d( _
  3. page, extra_resources = ghost.open("http://sayitout.net/item/10826.html")
复制代码
返回超时,无法下载网页的错误,打开百度就没问题。
空
回复 支持 反对

使用道具 举报

augustye 该用户已被删除
发表于 2014-8-6 06:34:01 | 显示全部楼层
fatiery 发表于 2014-8-6 01:06
/ a  l8 _% ]* N$ {+ A% l, U/ n方案1.研究中。。。
6 t9 v3 H0 C3 Y! Y" o9 B方案2.重写js功能估计没用吧。必须要打开网页的时候,打开那个js,那个js应该是包含网 ...

, x; J2 p: e4 W" A% K那个js里面不包含数据啊,只包含函数,浏览器运行这个js文件的时候会调用其中的函数,发出ajax请求。所以按理说你只需要重写相关部分,模仿下这个ajax请求就好了。
# E& U) K1 ]3 V$ @5 G" G; N) z! s4 j+ j0 g2 |) l
另:如果js文件里包含数据,那岂不是更简单,你直接抓取js文件,正则表达式匹配下就好了。

点评

如果我懂js,按你说的方法肯定是极好的。但是这个js文件对我而言太复杂,它里面还包含了其他的参数,比如thread_id,这个参数其实我是在另外一个页面抓取的。 这个js不直接包含数据,包含的是一个生成随机6位数字的  详情 回复 发表于 2014-8-6 12:12
回复 支持 反对

使用道具 举报

119

主题

2037

广告币

2608

积分

版主

名利权情牢是非成败空

积分
2608

社区QQ达人

 楼主| 发表于 2014-8-6 12:12:30 | 显示全部楼层
本帖最后由 fatiery 于 2014-8-6 12:15 编辑
7 e6 K7 m  q5 i4 d
augustye 发表于 2014-8-6 06:34
7 z8 ?9 @# G! o# L那个js里面不包含数据啊,只包含函数,浏览器运行这个js文件的时候会调用其中的函数,发出ajax请求。所以 ...

  ], ?8 H" X1 Z( ~如果我懂js,按你说的方法肯定是极好的。但是这个js文件对我而言太复杂,它里面还包含了其他的参数,比如thread_id,这个参数其实我是在另外一个页面抓取的。- K6 \' n7 K" e4 ?6 T; V* m( P+ E, w$ n
4 Q4 h5 P; E" I( c7 v$ N: S) o
这个js不直接包含数据,我现在需要的是这个js打开之后函数生成的6位随机数。我现在还是在用你方案1的方式,找些基于webkit开发的软件。找到一些不错的模块,但是中文的网页就报错。' v$ b* _& b4 K) p3 T5 N: S
& s  b4 r. Q0 M0 T' ]& Y
如果愿意PM我你的QQ,我还有个技术问题求教。
空
回复 支持 反对

使用道具 举报

augustye 该用户已被删除
发表于 2014-8-6 15:18:14 | 显示全部楼层
fatiery 发表于 2014-8-6 12:12( ~0 Y' n! H8 J$ D- O1 n
如果我懂js,按你说的方法肯定是极好的。但是这个js文件对我而言太复杂,它里面还包含了其他的参数,比如t ...
7 T# [+ a$ X- B$ X. _
其实吧,那个js文件里生成的随机数真的就是个随机数# X# N. h0 e8 ~' ?  O( F
8 B/ p3 _  ^- L4 v2 R
var h="cb_"+Math.round(Math.random()*1e6);% j# |2 ]$ X* t  D
9 [8 b4 D/ G: `- V% \
没什么特别的。。。你完全可以用python生成。。。
9 r8 C' Y1 L) P0 F% T# L4 y. p5 Z0 H& s
如果还需要讨论,把你的QQ发给我,我加你
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们|联系我们|DMCA|广告服务|小黑屋|手机版|Archiver|Github|网站地图|AdvertCN

GMT+8, 2026-10-4 11:06 , Processed in 0.086929 second(s), 29 queries , Gzip On.

Copyright © 2001-2026, AdvertCN

Proudly Operating in Hong Kong.

快速回复 返回顶部 返回列表