selenium 问题 - V2EX
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
guolingbing
V2EX    Python

selenium 问题

  •  
  •   guolingbing 2016-06-10 16:45:30 +08:00 3128 次点击
    这是一个创建于 3412 天前的主题,其中的信息可能已经有所发展或是发生改变。
    受导师要求,小的最近在爬百度知道上的问题= =遇到一点小问题,所以来求教大 V 们
    大家都了解百度的尿性,他的防蔽屏手段就是用 js 把搞乱的文字解析回来,具体原理我也没弄明白,于是就想直接解析他的 js ,然后就出现了一点小问题
    当我对于一个问题反复请求时就会触发屏蔽机制,得到如下的字符串

    A. 风化作用冰川 U 形谷 B 沪弧高旧薨搅胳些供氓. 侵蚀作用喀斯特地貌 C. 搬运作用沙丘、戈壁 D. 沉积作用河流、峡谷

    可见他把字符搞乱了,此外我还发现过语句顺序方面的错误,或者 404 ,而这些在加载 js 的时候页面显示是正常的。

    然后我用 selenium 解析,我尝试 100 次,但是在这 100 次中第一次总是乱码,跟没解析一样,之后都正常

    0 A. 风化作用冰川 U 形谷 B 沪弧高旧薨搅胳些供氓. 侵蚀作用喀斯特地貌 C. 搬运作用沙丘、戈壁 D. 沉积作用河流、峡谷
    1 A. 风化作用冰川 U 形谷 B. 侵蚀作用喀斯特地貌 C. 搬运作用沙丘、戈壁 D. 沉积作用河流、峡谷

    但是我总不能在爬的时候对一个链接都访问两次啊,,求各位大神指教啊!!!
    我的代码
    driver = webdriver.PhantomJS(desired_capabilities=dcap)
    for i in range(100):
    driver.get("http://zhidao.baidu.com/question/1819540104107061868.html")
    with open(str(i)+'.html', 'w') as f:
    f.write(driver.page_source)
    try:
    print i, driver.find_element_by_xpath('//*[@id="question-content"]/div/div').text
    except Exception, e:
    print driver.current_url
    time.sleep(1)
    driver.quit()
    9 条回复    2016-06-12 16:17:13 +08:00
    skydiver
        1
    skydiver  
       2016-06-10 16:49:00 +08:00 via iPad
    为什么不能都访问两次
    guolingbing
        2
    guolingbing  
    OP
       2016-06-10 16:50:00 +08:00
    @skydiver 因为我有强迫症啊=,=
    skydiver
        3
    strong>skydiver  
       2016-06-10 16:51:20 +08:00 via iPad
    @guolingbing 有病得治啊(^_^*)
    gxustudent
        4
    gxustudent  
       2016-06-10 20:31:28 +08:00
    如果有强迫症的话建议,进入百度的服务器,看看他的判断逻辑是什么,再先办法绕过。
    mofeiwo
        5
    mofeiwo  
       2016-06-11 13:36:29 +08:00
    怎么简单怎么来啊。
    hantsy
        6
    hantsy  
       2016-06-11 14:17:44 +08:00
    但是在这 100 次中第一次总是乱码,跟没解析一样,之后都正常。。。

    应该可以设置默认页面编码的。
    gonjay
        7
    gonjay  
       2016-06-11 23:38:11 +08:00
    有 docker 版本的可以用,能直接通过 api 来调
    rale
        8
    rale  
       2016-06-12 11:20:39 +08:00
    我是这样理解的,百度的 js 对系统的默认解码算法进行了一下修改,导致在没有 js 的时候默认的解码算法出来的是乱七八糟的文字,所以我觉得你的是 selenium 第一次请求时, js 还未请求下来执行,而第二次有了第一次的缓存,所以未乱码。
    你可以设置 implicitly_wait 多等待一下看下情况,或者你将 webdriver 换成 firefox , 这样你可以通过调试工具看是否有资源未被加载完。
    alexapollo
        9
    alexapollo  
       2016-06-12 16:17:13 +08:00
    代码还是格式化一下, markdown 规则
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3040 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 00:24 PVG 08:24 LAX 17:24 JFK 20:24
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86