AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

 谷歌+Bing+TT+MSN官方代理 
⚡️按条S5代理⚡️静态⚡️独享⚡️5G⚡️最干净<Wifi住宅+5G移动>IP代理指纹浏览器,就用AdsPower
Mediabuy⚡️玩家开户首选【鲁班跨境通-自助充值转账】FB/GG/TT❤️官方免费开户Affiliate 全媒体流量资源⚡️
Taboola/Outbrain /Bing⚡️一级代理开户投流-7*24h❤️人工在线【官方】❤️搜索套利广告开户独立站⚡️开户投放
DuoPlus专注打造跨境电商云手机E.PN 虚拟卡BINOM TRACKER 60% OFF!比Adplexity还好用的Spy工具
MediaGo+Taboola+Ob开户百度国际MediaGo⚡️让产品狂奔全球百度国际,高点击转化,快速放量百度国际MediaGo,独家原生流量
ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理虚拟信用卡+独立站收款全球虚拟卡, 支持U充值
Facebook 批量上广告尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)FB 三不限源头 - 自助下户充值转款
各种主页、账单户、BM户(优势)⚡️个人户,bm户不限额,账单户一手BM分享户不限额9Proxy ⚡️ $0.04/IP, 无限带宽
FB二三解0.1元一个虚拟卡|PTM星际卡FB专用虚拟卡Google、Bing官方总代  联盟流量开户
FB账号资源/稳定靠谱/运行5年啦FB开户代投/三不限/白名单广告位出租 
查看: 21493|回复: 16

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

[复制链接]

116

主题

1944

广告币

2486

积分

版主

名利权情牢是非成败空大家可以叫我空或空空希望能跟大家成为朋友

Rank: 7Rank: 7Rank: 7

积分
2486

社区QQ达人

发表于 2014-8-4 23:44:47 | 显示全部楼层 |阅读模式
用Python写一个多(忽)说(略)的群发程序,现在遇到一个问题,打开的网页中包含一个js文件1 l7 x! J5 [6 ]1 U" j! l8 x: c' _
  1. http://static.duoshuo.com/embed.js
复制代码
里面包含了一段参数,; ?! g* s+ H$ Y9 w: M6 H# W
  1. h="cb_"+Math.round(Math.random()*1e6)
复制代码
生成6位的随机数字,谁知道我怎么获得这个数据?python的selenium模块效率太低,我要效率高的。
# h; x$ e$ d2 D- B+ l" P
9 d/ e. O, M0 ~, u/ h请推荐一个模块或者是其他的什么语言, 最好是能快速上手的。
& O, |6 S2 ]) s) m1 ]# c
* U% H& ~+ `; `% c3 G$ j4 X( _另外最好能详细一点,不甚感激。
. b! t7 E0 G7 F$ `; v
相关帖子
承蒙骄阳当年提携 感谢河马现今不弃 能在广告中国做版主 我很感恩 | 我没有什么才能 更不是什么大佬 但我喜欢学习和分享 期盼在这里一起成长[我的日记]
回复

使用道具 举报

0

主题

480

广告币

1272

积分

高级会员

Rank: 4

积分
1272
发表于 2014-8-5 00:07:58 | 显示全部楼层
试试casperjs模块? 无界面浏览器 可以解析js
* U& B! `  t, ~4 X! P官网有很详细文档% p% q# z! k9 ?+ Z: {; T! f# A& Q
  1. http://casperjs.org/
复制代码

2 O* i7 L% e4 `"CasperJS是一个开源的导航脚本处理和测试工具,基于PhantomJS(前端自动化测试工具)编写。"
- |% c, E4 y1 k' a
回复 支持 反对

使用道具 举报

54

主题

9

广告币

6010

积分

禁止访问

积分
6010
发表于 2014-8-5 08:27:04 | 显示全部楼层
  1. import random( s6 Q+ a& o. Z1 B; T
  2. rand = random.randint(100000,999999)
    6 M$ d0 b% ^- L+ Y7 m
  3. print rand
    7 c: [! i' G# Z9 H
复制代码
# }! o) v5 V7 h2 _2 D7 ^& D) t; T
生成六位随机数- W6 o' q6 \' a. }# L" i) _- K# r
/ m- C, p* N5 Z, z  R

点评

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

使用道具 举报

116

主题

1944

广告币

2486

积分

版主

名利权情牢是非成败空大家可以叫我空或空空希望能跟大家成为朋友

Rank: 7Rank: 7Rank: 7

积分
2486

社区QQ达人

 楼主| 发表于 2014-8-5 08:47:35 | 显示全部楼层
阿百川 发表于 2014-8-5 08:27, z; o/ ~7 L( S, u8 `
生成六位随机数
9 X  |, c* j" D! v0 c% L1 P" Y
我需要获取js文件中生成的随机数,不是自己生成一个随机数
承蒙骄阳当年提携 感谢河马现今不弃 能在广告中国做版主 我很感恩 | 我没有什么才能 更不是什么大佬 但我喜欢学习和分享 期盼在这里一起成长[我的日记]
回复 支持 反对

使用道具 举报

54

主题

9

广告币

6010

积分

禁止访问

积分
6010
发表于 2014-8-5 09:07:01 | 显示全部楼层
fatiery 发表于 2014-8-5 08:47! d6 d+ f( c, o) S1 e
我需要获取js文件中生成的随机数,不是自己生成一个随机数

0 B7 I2 q7 V) H) A6 O) ]这个只是随机生成的吧,又没什么验证& C# Z% G" _% F, V; z1 ?
4 e, V* z6 q$ e: o) E
  1. https://pypi.python.org/pypi/spynner
复制代码

/ G! g6 ~3 m3 M6 {利用webkit解析js

点评

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

使用道具 举报

116

主题

1944

广告币

2486

积分

版主

名利权情牢是非成败空大家可以叫我空或空空希望能跟大家成为朋友

Rank: 7Rank: 7Rank: 7

积分
2486

社区QQ达人

 楼主| 发表于 2014-8-5 09:18:01 | 显示全部楼层
阿百川 发表于 2014-8-5 09:07
2 R& Q5 g& e3 ~这个只是随机生成的吧,又没什么验证
# z- M" a( y6 \, \4 J; |. E
有验证的,我没写,这个是用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在& S5 F$ Q- b5 b7 D
  1. http://static.duoshuo.com/embed.js
复制代码
中生成$ a& \) _. Q/ A3 q8 x/ b7 o+ Z
承蒙骄阳当年提携 感谢河马现今不弃 能在广告中国做版主 我很感恩 | 我没有什么才能 更不是什么大佬 但我喜欢学习和分享 期盼在这里一起成长[我的日记]
回复 支持 反对

使用道具 举报

54

主题

9

广告币

6010

积分

禁止访问

积分
6010
发表于 2014-8-5 09:33:04 | 显示全部楼层
fatiery 发表于 2014-8-5 09:188 Y+ G/ \  x4 s( \; ?+ ^' _
有验证的,我没写,这个是用get方式提交的我现在就是要获取参数5,参数5在
9 H6 f; j; n' ~. O9 h8 w中生成! f2 G3 {$ ]0 [8 p- T8 L) Z9 F: ?
...
( J9 M: ~; ?' M5 v: }) e( m, H; p
不解析js不好搞,还是用spynner吧
回复 支持 反对

使用道具 举报

augustye 该用户已被删除
发表于 2014-8-5 09:34:50 | 显示全部楼层
方案1: 内嵌webkit模块运行那个网页(包括js文件),然后用webkit提供的API获取js空间中的变量值。4 _7 b  @: N1 G

( y; ^$ v5 n2 P( \1 L方案2: 用你使用的语言重写那个js文件中的相关功能,如果你的程序是服务器端运行用nodejs可以省很多工作量
3 E2 s) s6 Z" l* N6 j1 Y7 Q; ?# {! u/ @9 u

点评

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

使用道具 举报

10

主题

1202

广告币

1283

积分

高级会员

Rank: 4

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

点评

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

使用道具 举报

116

主题

1944

广告币

2486

积分

版主

名利权情牢是非成败空大家可以叫我空或空空希望能跟大家成为朋友

Rank: 7Rank: 7Rank: 7

积分
2486

社区QQ达人

 楼主| 发表于 2014-8-6 00:59:48 | 显示全部楼层
我目前还在研究中,这个问题困扰我2天了。。。
承蒙骄阳当年提携 感谢河马现今不弃 能在广告中国做版主 我很感恩 | 我没有什么才能 更不是什么大佬 但我喜欢学习和分享 期盼在这里一起成长[我的日记]
回复 支持 反对

使用道具 举报

116

主题

1944

广告币

2486

积分

版主

名利权情牢是非成败空大家可以叫我空或空空希望能跟大家成为朋友

Rank: 7Rank: 7Rank: 7

积分
2486

社区QQ达人

 楼主| 发表于 2014-8-6 01:06:21 | 显示全部楼层
本帖最后由 fatiery 于 2014-8-6 01:26 编辑
, U$ {5 R4 Q- G; ~! @" r, b
augustye 发表于 2014-8-5 09:343 T+ ~" L8 J6 k' R  E
方案1: 内嵌webkit模块运行那个网页(包括js文件),然后用webkit提供的API获取js空间中的变量值。
- Y, Q; B* B' _0 k7 `- B) `
/ l) d" c0 V) E$ \" U方案2: ...
' d. {9 H8 G0 a  |
方案1.研究中。。。
8 ?. Y- F( }+ m. S) o方案2.重写js功能估计没用吧。必须要打开网页的时候,打开那个js,那个js应该是包含网页的相关数据的,然后数据应该已经返回到它的服务器上,我提交的时候和服务器上的数据比对,相同才可以提交成功。(我没学过js,这个是流程是我想象的,不是的话,请指出)
承蒙骄阳当年提携 感谢河马现今不弃 能在广告中国做版主 我很感恩 | 我没有什么才能 更不是什么大佬 但我喜欢学习和分享 期盼在这里一起成长[我的日记]
回复 支持 反对

使用道具 举报

116

主题

1944

广告币

2486

积分

版主

名利权情牢是非成败空大家可以叫我空或空空希望能跟大家成为朋友

Rank: 7Rank: 7Rank: 7

积分
2486

社区QQ达人

 楼主| 发表于 2014-8-6 02:21:54 | 显示全部楼层
darren 发表于 2014-8-5 22:258 l' i6 `6 N8 B4 X# Y0 p
也可以挂一个ghost.py, 一般做法就是跑个webkit 的内核,浏览器显示什么,你也就能得到什么 ...

0 r9 L" {$ B8 |; f$ f/ A# O& Xghost.py以及上面提到的一些,还有没有提到的比如phantomjs,我都搜索到然后测试了有些代码我看不懂,有些出错比如你说的ghost.py
  1. from ghost import Ghost. {" c# I; A3 a( H0 P" i4 t: t) _$ o
  2. ghost = Ghost()9 N* ?6 T' Z1 ~3 Y
  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
1 U+ s* x  r# y9 _4 I2 p方案1.研究中。。。$ e8 W' L  `0 H9 p
方案2.重写js功能估计没用吧。必须要打开网页的时候,打开那个js,那个js应该是包含网 ...

3 x2 U  Y" f# L" d那个js里面不包含数据啊,只包含函数,浏览器运行这个js文件的时候会调用其中的函数,发出ajax请求。所以按理说你只需要重写相关部分,模仿下这个ajax请求就好了。
3 C4 g3 Q+ @% h& N" u
! y9 B, ^' e  _7 o9 G另:如果js文件里包含数据,那岂不是更简单,你直接抓取js文件,正则表达式匹配下就好了。

点评

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

使用道具 举报

116

主题

1944

广告币

2486

积分

版主

名利权情牢是非成败空大家可以叫我空或空空希望能跟大家成为朋友

Rank: 7Rank: 7Rank: 7

积分
2486

社区QQ达人

 楼主| 发表于 2014-8-6 12:12:30 | 显示全部楼层
本帖最后由 fatiery 于 2014-8-6 12:15 编辑 % D6 m  P, W. x  }
augustye 发表于 2014-8-6 06:34/ x% l* \) ?1 R9 B
那个js里面不包含数据啊,只包含函数,浏览器运行这个js文件的时候会调用其中的函数,发出ajax请求。所以 ...
: |8 j5 g: n/ _
如果我懂js,按你说的方法肯定是极好的。但是这个js文件对我而言太复杂,它里面还包含了其他的参数,比如thread_id,这个参数其实我是在另外一个页面抓取的。
/ N. H# D, h$ s* `- I# p( S) n2 A5 N% E
这个js不直接包含数据,我现在需要的是这个js打开之后函数生成的6位随机数。我现在还是在用你方案1的方式,找些基于webkit开发的软件。找到一些不错的模块,但是中文的网页就报错。6 L1 }% w" U' I* a

' f9 B" \- I' [  Q& ]如果愿意PM我你的QQ,我还有个技术问题求教。
承蒙骄阳当年提携 感谢河马现今不弃 能在广告中国做版主 我很感恩 | 我没有什么才能 更不是什么大佬 但我喜欢学习和分享 期盼在这里一起成长[我的日记]
回复 支持 反对

使用道具 举报

augustye 该用户已被删除
发表于 2014-8-6 15:18:14 | 显示全部楼层
fatiery 发表于 2014-8-6 12:12
7 I# `% V7 o1 f  l* Y如果我懂js,按你说的方法肯定是极好的。但是这个js文件对我而言太复杂,它里面还包含了其他的参数,比如t ...
: n- w: m0 T, `4 v6 U" E
其实吧,那个js文件里生成的随机数真的就是个随机数2 M1 p0 K  c9 u' {0 j
8 I) \% a, ?( X8 N
var h="cb_"+Math.round(Math.random()*1e6);# F+ M+ N' j) }( @
* Z. s1 j6 {- _$ A/ }4 Q6 t
没什么特别的。。。你完全可以用python生成。。。
6 F0 Y: p  n& @1 O$ D% ~. Y9 K  U4 y5 j' N/ L2 G" V/ G
如果还需要讨论,把你的QQ发给我,我加你
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 13:57 , Processed in 0.053614 second(s), 20 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

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