AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

 谷歌+Bing+TT+MSN官方代理 
⚡️按条S5代理⚡️静态⚡️独享⚡️5G⚡️最干净<Wifi住宅+5G移动>IP代理泰国仓储,本土仓发货2-3元/单
指纹浏览器,就用AdsPower谷歌/FB/Bing/Yahoo代理商开户7200W全球动态不重复住宅IP代理BINOM TRACKER 60% OFF!
出售Facebook,友缘号,FB广告号,insFB/TT/KW 加白开户ADPLEXITY + ADVERTCN比Adplexity还好用的Spy工具
广
FB/Google/TK海外多媒体极速下户
MediaGo+Taboola+Ob开户百度国际MediaGo⚡️让产品狂奔全球百度国际,高点击转化,快速放量百度国际MediaGo,独家原生流量
行业首创新型指纹Cloak, 谷歌奇效!⚡IPFoxy住宅代理全场88折⚡全球虚拟卡, 支持U充值各种主页、账单户、BM户(优势)
⚡️个人户,bm户不限额,账单户Adsterra 的CPA/CPM/CPC 网站流量在线注册美国/英国/香港等海外公司EU KETO/CBD - Jumbleberry
FB二三解1元/个9Proxy ⚡️ $0.04/IP, 无限带宽 cloak斗篷/ss/nutra/cpa/Dating广告位出租
全球低价纯净住宅/移动IP-免费试用广告代投, 东南亚物流, 虚拟信用卡VMLogin指纹浏览器+多账号防关联 
查看: 18754|回复: 16

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

[复制链接]

97

主题

1778

广告币

2295

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2295

社区QQ达人

发表于 2014-8-4 23:44:47 | 显示全部楼层 |阅读模式
adsterra
用Python写一个多(忽)说(略)的群发程序,现在遇到一个问题,打开的网页中包含一个js文件4 F$ F' |7 |' t. K4 m0 U! A
  1. http://static.duoshuo.com/embed.js
复制代码
里面包含了一段参数,7 H) E. j5 s) O$ s$ E! Q
  1. h="cb_"+Math.round(Math.random()*1e6)
复制代码
生成6位的随机数字,谁知道我怎么获得这个数据?python的selenium模块效率太低,我要效率高的。, l2 g6 j$ ~  Z' D$ h# G% V/ I2 A

. J! m8 M# o: s9 a. N. F) L/ q$ ^请推荐一个模块或者是其他的什么语言, 最好是能快速上手的。
0 U3 k2 L9 e& R3 D, T2 m, p' l: w' i2 W* r6 k; [
另外最好能详细一点,不甚感激。* V! q0 R. }. C* |3 E8 o+ [+ T" d* q
相关帖子
回复

使用道具 举报

0

主题

480

广告币

1272

积分

高级会员

Rank: 4

积分
1272
发表于 2014-8-5 00:07:58 | 显示全部楼层
试试casperjs模块? 无界面浏览器 可以解析js * [7 Z* g% G0 r
官网有很详细文档
( N3 |& Z' _' }4 L& d- I* J
  1. http://casperjs.org/
复制代码

  E* a6 V2 x9 y* t"CasperJS是一个开源的导航脚本处理和测试工具,基于PhantomJS(前端自动化测试工具)编写。"1 m) M' Y3 Q4 |4 }  L1 q  u8 t
回复 支持 反对

使用道具 举报

54

主题

9

广告币

6010

积分

禁止访问

积分
6010
发表于 2014-8-5 08:27:04 | 显示全部楼层
  1. import random+ ^4 U, ]6 T9 ]+ G
  2. rand = random.randint(100000,999999)$ b& Y% H. ~, P. J
  3. print rand9 k7 _7 d$ l' u$ X; e
复制代码
* W5 S4 e: d! [* P/ i) }9 ~! |
生成六位随机数/ T  Q7 T6 P# Y( W+ m

: b8 C: S; k1 z5 H

点评

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

使用道具 举报

97

主题

1778

广告币

2295

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2295

社区QQ达人

 楼主| 发表于 2014-8-5 08:47:35 | 显示全部楼层
阿百川 发表于 2014-8-5 08:270 y3 B$ d* p3 S% X, L
生成六位随机数

' G0 M$ T' C% D* @我需要获取js文件中生成的随机数,不是自己生成一个随机数
回复 支持 反对

使用道具 举报

54

主题

9

广告币

6010

积分

禁止访问

积分
6010
发表于 2014-8-5 09:07:01 | 显示全部楼层
fatiery 发表于 2014-8-5 08:47
2 \/ E/ J0 t5 Z2 `我需要获取js文件中生成的随机数,不是自己生成一个随机数

6 I1 M# ~4 s8 A' w0 S5 N! O这个只是随机生成的吧,又没什么验证  H; D6 D( q2 R' b7 k
5 o) Z: `- [3 f0 e
  1. https://pypi.python.org/pypi/spynner
复制代码

# t, Y1 o  Z, c# ~$ Z利用webkit解析js

点评

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

使用道具 举报

97

主题

1778

广告币

2295

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2295

社区QQ达人

 楼主| 发表于 2014-8-5 09:18:01 | 显示全部楼层
阿百川 发表于 2014-8-5 09:077 z" u& [9 p7 j/ J& n
这个只是随机生成的吧,又没什么验证

1 |7 j/ X' l  t, [3 n有验证的,我没写,这个是用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在( Y3 b! M3 k& W4 D7 [
  1. http://static.duoshuo.com/embed.js
复制代码
中生成6 q$ H, M& z% N5 ]5 J3 P
回复 支持 反对

使用道具 举报

54

主题

9

广告币

6010

积分

禁止访问

积分
6010
发表于 2014-8-5 09:33:04 | 显示全部楼层
fatiery 发表于 2014-8-5 09:18/ [4 T* |% Q( P$ Q( ^: p
有验证的,我没写,这个是用get方式提交的我现在就是要获取参数5,参数5在
, U4 J9 Y1 D3 b( X* V中生成
. y8 h; j6 U8 M ...

# w; T! o! W' K) r不解析js不好搞,还是用spynner吧
回复 支持 反对

使用道具 举报

augustye 该用户已被删除
发表于 2014-8-5 09:34:50 | 显示全部楼层
方案1: 内嵌webkit模块运行那个网页(包括js文件),然后用webkit提供的API获取js空间中的变量值。$ @6 N. H# B$ W; R
7 v7 ?4 ]% |; D: |
方案2: 用你使用的语言重写那个js文件中的相关功能,如果你的程序是服务器端运行用nodejs可以省很多工作量
% b5 q( ~$ B- v

点评

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

使用道具 举报

10

主题

1191

广告币

1272

积分

高级会员

Rank: 4

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

点评

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

使用道具 举报

97

主题

1778

广告币

2295

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2295

社区QQ达人

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

使用道具 举报

97

主题

1778

广告币

2295

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2295

社区QQ达人

 楼主| 发表于 2014-8-6 01:06:21 | 显示全部楼层
本帖最后由 fatiery 于 2014-8-6 01:26 编辑 ) n( I/ Z' o  X! ]1 `( L" y& ^
augustye 发表于 2014-8-5 09:34. W: m3 S$ t5 p* m" O' p# X! B
方案1: 内嵌webkit模块运行那个网页(包括js文件),然后用webkit提供的API获取js空间中的变量值。4 B" O7 ^+ Y1 z9 h2 o* }- u
2 P2 S- o" U5 }: ^% j
方案2: ...
; {0 H/ g7 R. h2 `$ u- V
方案1.研究中。。。( n' K  [& G$ r# J, K& A
方案2.重写js功能估计没用吧。必须要打开网页的时候,打开那个js,那个js应该是包含网页的相关数据的,然后数据应该已经返回到它的服务器上,我提交的时候和服务器上的数据比对,相同才可以提交成功。(我没学过js,这个是流程是我想象的,不是的话,请指出)
回复 支持 反对

使用道具 举报

97

主题

1778

广告币

2295

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2295

社区QQ达人

 楼主| 发表于 2014-8-6 02:21:54 | 显示全部楼层
darren 发表于 2014-8-5 22:25) H* V, s( v& [; F  ]  v* I/ ~  d6 U
也可以挂一个ghost.py, 一般做法就是跑个webkit 的内核,浏览器显示什么,你也就能得到什么 ...

' @9 j+ ^( p1 S; F" j! Z  m; t& P- Jghost.py以及上面提到的一些,还有没有提到的比如phantomjs,我都搜索到然后测试了有些代码我看不懂,有些出错比如你说的ghost.py
  1. from ghost import Ghost5 p/ d9 V# _9 e. M5 n
  2. ghost = Ghost()
    : d1 y5 d1 ?1 w
  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
8 |9 G3 P5 D2 r  m方案1.研究中。。。
3 U! D/ r- X; Z2 L1 x方案2.重写js功能估计没用吧。必须要打开网页的时候,打开那个js,那个js应该是包含网 ...
6 L- x: t; j2 Z  ~; |
那个js里面不包含数据啊,只包含函数,浏览器运行这个js文件的时候会调用其中的函数,发出ajax请求。所以按理说你只需要重写相关部分,模仿下这个ajax请求就好了。. l4 ~$ i; M+ C5 l6 |3 r' l
% V( X2 L9 G# J7 g' L9 {9 s% U
另:如果js文件里包含数据,那岂不是更简单,你直接抓取js文件,正则表达式匹配下就好了。

点评

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

使用道具 举报

97

主题

1778

广告币

2295

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2295

社区QQ达人

 楼主| 发表于 2014-8-6 12:12:30 | 显示全部楼层
本帖最后由 fatiery 于 2014-8-6 12:15 编辑 1 Z2 ]. Q8 z5 c% P7 C
augustye 发表于 2014-8-6 06:34- g( p. Y( n, N' d
那个js里面不包含数据啊,只包含函数,浏览器运行这个js文件的时候会调用其中的函数,发出ajax请求。所以 ...
4 T3 l  T1 w( `3 j% E- G/ @
如果我懂js,按你说的方法肯定是极好的。但是这个js文件对我而言太复杂,它里面还包含了其他的参数,比如thread_id,这个参数其实我是在另外一个页面抓取的。5 s6 J( J8 E& q0 v

& u& w& U" N0 D" V这个js不直接包含数据,我现在需要的是这个js打开之后函数生成的6位随机数。我现在还是在用你方案1的方式,找些基于webkit开发的软件。找到一些不错的模块,但是中文的网页就报错。
$ F" n% H0 `5 X9 H8 d% D! j2 R. |) \  G3 ]
如果愿意PM我你的QQ,我还有个技术问题求教。
回复 支持 反对

使用道具 举报

augustye 该用户已被删除
发表于 2014-8-6 15:18:14 | 显示全部楼层
fatiery 发表于 2014-8-6 12:12
4 x9 [/ @  J; r$ P: i( D如果我懂js,按你说的方法肯定是极好的。但是这个js文件对我而言太复杂,它里面还包含了其他的参数,比如t ...
) J# k: D$ N* h
其实吧,那个js文件里生成的随机数真的就是个随机数
" o# L$ ^1 a% z: x: J
5 @3 W& v: @9 M* v" M& P% o, rvar h="cb_"+Math.round(Math.random()*1e6);" @( z7 S1 N# e' ?; l3 V1 V
0 s; Y  U4 S# N
没什么特别的。。。你完全可以用python生成。。。
4 G  y4 P. \% r6 N( H) m
8 r' t: R/ T* v. u- q如果还需要讨论,把你的QQ发给我,我加你
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-17 13:24 , Processed in 0.066189 second(s), 21 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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