推荐学习书目
› 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
lic2zac
V2EX  ›  Python

想请教大家一个关于 web 请求或者说爬虫方面的问题

  •  
  •   lic2zac · Sep 10, 2020 · 2575 views
    This topic created in 2240 days ago, the information mentioned may be changed or developed.

    小弟是做 python 爬虫的,用的是大家很熟悉的库 requests, 今天遇到一个很神奇的现象,在爬取一个国外网站的过程中, 它有 xx.cn 和 xx.com 这两个域名, 然后我在并发的请求 AB 两个商品数据时发生了以下状况(这几个情况我试了很多遍, 都是这样)

    1. 用同一个 session 并发请求 xx.com/A 和 xx.com/B 的时候没有问题

    2. 用同一个 session 并发请求 xx.cn/A 和 xx.cn/B 的时候发现出现了 A 的响应数据给了 B 的请求, B 的响应数据给了 A 的请求(但是大部分时候都是正确的,应该也和反爬无关)

    3. 每个请求单独生成一个 session, 并发请求 xx.com/A 和 xx.com/B 的时候没有问题, 并发请求 xx.cn/A 和 xx.cn/B 也没有问题

    我想问的是:

    1. 会不会是他们.cn 和.com 用的技术不一样, 导致.cn 的有这个问题?

    2. web 服务会有 bug 导致出现这个问题么?

    感谢大家 0.0

    4 replies  •  2020-09-10 17:24:38 +08:00
    kop1989
        1
    kop1989  
       Sep 10, 2020
    估计是.cn 的服务器端是一个壳,通过 http 接口再去.com 的服务器去取结果。
    但肯定这过程中存在异步转同步的操作,比如.com 中有个针对.cn 的请求缓存队列。
    然后这个队列的返回是以 sessionkey 或者说 sessionID 或者等等特征 id 作为唯一值的。
    lz 用请求工具直接调接口,导致特征 id 不唯一,就会出现内存泄漏的情况。
    kop1989
        2
    kop1989  
       Sep 10, 2020
    @kop1989 #1 修正一下,“但肯定这过程中存在异步转同步的操作” =》异步转同步再异步
    lic2zac
        3
    lic2zac  
    OP
       Sep 10, 2020
    @kop1989 如果真是这样做的确实有可能出现这个问题, 不过 cn 返回的中文数据,com 返回的是英文数据,应该不太可能用同一个 com 的接口吧
    kop1989
        4
    kop1989  
       Sep 10, 2020
    @lic2zac #3 有可能是同一个数据链路层,然后做的国际化。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4898 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 75ms · UTC 09:00 · PVG 17:00 · LAX 02:00 · JFK 05:00
    ♥ Do have faith in what you're doing.