V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
alphab
V2EX  ›  Python

爬虫如何爬取有变量的 URL?似乎是网站 js 自动生成的

  •  
  •   alphab · 2017-11-14 17:22:14 +08:00 · 3398 次点击
    这是一个创建于 2566 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想用爬中爬取途牛网的机票信息,大概每 10 分钟爬去一次来获取最新票价

    抓包到的票价 api 请求为: https://flight-api.tuniu.com/query/flight/v1/asyncProd?callback=jQuery17206316937206666016_1510628406488&{"responseId":"ec43b49b-c8e7-11e7-9d34-4603a1ce7740","groupIds":["0","6","1","2","3","4","5"]}&_=1510628408803

    这个请求的网址大概每 5 分钟后就会失效,我推测是 callback=jQuery17206316937206666016_1510628406488 这一串变量需要不断的生成最新的

    但我对 js 几乎是 0 基础,折腾了一下午都没有找到如何来获取这个变量,还望大佬们能详细的指点迷津。

    机票查询网址是: http://flight.tuniu.com/city_BJS_CAN/?start=2017-11-17

    9 条回复    2017-11-19 12:12:51 +08:00
    BiggerLonger
        1
    BiggerLonger  
       2017-11-14 17:29:28 +08:00
    1510628406488 很明顯是 timestamp 吧?
    alphab
        2
    alphab  
    OP
       2017-11-14 17:35:13 +08:00
    @BiggerLonger 嗯,时间戳,只是这个不知如何破? jQuery17206316937206666016
    crab
        3
    crab  
       2017-11-14 17:36:14 +08:00   ❤️ 1
    @alphab 那是回调函数名,写固定都可以,不影响。
    vtwoextb
        4
    vtwoextb  
       2017-11-14 17:37:56 +08:00   ❤️ 1
    和 callback=jQuery17206316937206666016_1510628406488 这个无关 这只不过是 jsonp 格式 请求数据,我刚才测试了一下 途牛应该是 根据 ip 请求次数过于频繁途牛直接给你返回错误了,你等一会在请求 数据是能出来的,看目前情况 你刷的太频繁了 可能会把你的 ip 列入黑名单。我原来也遇到过这种问题 写了一个 动态换 ip 的爬虫 https://github.com/hizdm 你可以参考一下
    p2pCoder
        5
    p2pCoder  
       2017-11-14 17:38:04 +08:00   ❤️ 1
    callback 是生成用来解决跨域的吧,一般是 jsonp 或者 jquery 加时间戳,你这个中间加了一些随机参数之类
    一般是 jquery 的 $.ajax 或者$.getJson 自动生成的
    alphab
        6
    alphab  
    OP
       2017-11-14 18:06:10 +08:00
    @vtwoextb 感谢,这个 php 版本如何接入 python ? 还是要单独的运行, 大佬有没有详细点的使用说明,小白不知道该如何用...
    vtwoextb
        7
    vtwoextb  
       2017-11-15 08:54:03 +08:00   ❤️ 1
    @alphab 你可以用 python 语言按照 php 代码的逻辑实现 或者 用 python 调用 php 代码也可以
    hjl87423050
        8
    hjl87423050  
       2017-11-16 21:51:42 +08:00   ❤️ 1
    alphab
        9
    alphab  
    OP
       2017-11-19 12:12:51 +08:00
    @hjl87423050 谢谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2651 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 05:03 · PVG 13:03 · LAX 21:03 · JFK 00:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.