那些坑儿系列--Python--1--爬虫&pyv8

python写爬虫的文章很多,我就说一说自己碰到的坑。

有坑就最好有解决方法,本博不像其他到处转,结果啥用没有。

想爬取一个国内知名网站的内容,该网站有Json数据直接回传,开始挺高兴,写了段,爬爬挺轻松。

过了几天一看,nnd,request的url变了。

仔细看了网页的源代码,这个变态网站,连json的url都是由js生成的。这个js每隔一段时间就改变一下 url内容。

方法零:

      完全模拟网页形式,获取内容,这是没办法的办法,效率低下,不到万不得已不采用。

方法一:

       爬取html中的javascript内容,用正则获取js中变量的内容。但是,这天杀的网站,只要稍微将变量+-*/一下就直接废了。

方法二:

       解析javascript,获取变量内容,再组合URL。解析js,python中最出名的是pyv8,这东西就是本文介绍的天坑。

       50%以上的自以为是的人,说win下安装pyv8 直接pip就可以了。但是,实际上,根本安装不成功。查了官方的pypi,也没显示支持python3。翻出去,找到code.google网页原版,支持的也最多到python2.7。

      剩下49.99999%告诉你,有个pyv8-binaries项目,里面2个文件直接下载下来就可以使用。事实上,这个项目是为sublime Text3 的 emment 编译的 pyv8 , 用dumpbin查看_pyv8.pyd ,显示需要python33.dll ,我尝试copy python33.dll 至项目下,直接显示python版本冲突。用python37.dll 改名至项目下,仍旧找不到Dll。用反便宜软件反编译_pyv8.pyd ,再修改python33.dll 为 python37.dll ,重新编译,仍旧无法导入。反正反正我是没脾气,在win下,python3.3以上版本安装这个pyv8了。

     漫无目的的闲逛网站,在知乎的一个爬虫介绍帖子里,有个作者说,经过大家提醒有个js2py项目可用。再翻翻js2py,终于守得云开见月明。

import js2py
jsStr ="""
 var global_lang = 'zh_CN'; 
"""
context = js2py.EvalJs()
context.execute(jsStr)
print("value=",context.global_lang)

唯一不爽的是,这个js2py的import比较慢。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值