同学们,有人用Python写过京东的爬虫吗??问题多多 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
vcamx
V2EX    程序员

同学们,有人用Python写过京东的爬虫吗??问题多多

  •  
  •   vcamx
    VcamX 2013-02-23 17:05:38 +08:00 8336 次点击
    这是一个创建于 4614 天前的主题,其中的信息可能已经有所发展或是发生改变。
    python自带的urllib2库写的

    opener = urllib2.build_opener(urllib2.HTTPRedirectHandler(), urllib2.HTTPCookieProcessor())
    webpage = opener.open(url)
    html = webpage.read()
    webpage.close()
    print html

    1. 有的时候可以抓到html代码,但是显示乱码,gbk,,utf-8都试过了。chardet 也用过,检测出来居然是windows-XXXX。这是什么问题??
    用selenium抓每次都可以正常显示,不存在乱码和抓不到的情况

    2. 有的时候代码抓不到,返回 Errno 10054
    user-agent也修改过,换了各种浏览器的,不行的时候还是不行
    增加其他字段也是一样

    3. 用httplib,代码如下

    c = httplib.HTTPConnection('www.360buy.com')
    html = c.getresponse().read()
    print html
    print len(html)

    显示 一个字符的乱码,但是长度居然有16201!?

    有的时候返回502 bad gateway 的html代码!?

    求大神搭救!!!!!
    13 条回复    2013-02-25 23:02:02 +08:00
    Asimov
        1
    Asimov  
       2013-02-23 17:06:19 +08:00   1
    1。用 Requests
    2。爬慢点,鸡东有防爬
    vcamx
        2
    vcamx  
    OP
       2013-02-23 17:10:19 +08:00
    @Asimov 修改user-agent?试过了,还是一样……我单线程抓的,而且还是在人工测试的情况下……
    hfeeki
        3
    hfeeki  
       2013-02-23 19:00:23 +08:00
    有几个错误算啥?像爬虫这样的应用应该要写很多的预防代码,就是处理各种异常、出错的情况,可能会达到65%甚至更多(80-90),要有心理准备。
    具体复杂性还要看看京东自己的代码质量,是否有进行自动化测试,京东代码质量高(机器可读性好,比较少的特殊处理代码),你的代码就会简单,反之,如果京东的代码质量差(主要是各种各样进行特殊处理的代码),会导致你根本没法使用很简单的代码去爬他们的网页。
    muzuiget
        4
    muzuiget  
       2013-02-23 19:24:53 +08:00   1
    我写过,不过属于玩票性质,现在代码已经失效了。京东是开启 gzip 压缩的,也就是你用 urllib2.open(url).read() 读取出来数据其实是 gzip 的压缩数据,所以你怎么检测编码也是失败,你要自己解压,嫌麻烦就直接用 requests 好了,这个库会自动判断是否开启了 gzip 压缩并替你解压,你读取的就是 html 了。京东的 html 用的是 GBK 编码。
    vcamx
        5
    vcamx  
    OP
       2013-02-23 20:00:56 +08:00
    @muzuiget 原来是gzip,感谢了!
    vcamx
        6
    vcamx  
    OP
       2013-02-23 20:01:52 +08:00
    @hfeeki What are u talking about? = =
    hfeeki
        7
    hfeeki  
       2013-02-23 20:52:42 +08:00   1
    I just talking about my experiences on write a good web crawler. You need to hanle any excepiton or errors, note: it is ANY. Because when writing a web crawler, you must handle all of unexpected problems.
    qiao
        8
    qiao  
       2013-02-23 21:13:37 +08:00   1
    呃,我连 requests 都嫌麻烦,直接上 scrapy 吧。
    vcamx
        9
    vcamx  
    OP
       2013-02-24 00:26:34 +08:00
    @hfeeki 额,你说的我当然知道。我提问只是想知道有没有更好的解决方法而已。anyway,还是谢谢你
    vcamx
        10
    vcamx  
    OP
       2013-02-24 00:28:52 +08:00
    @qiao 好吧……
    @Asimov @muzuiget
    发现用代理可以抓,本机还是有时不行……
    leebo
        11
    leebo  
       2013-02-25 21:36:17 +08:00
    ruby 写采集感觉比较简单 open-uri + nokogiri 感觉很爽
    wenbinwu
        12
    wenbinwu  
       2013-02-25 21:54:40 +08:00
    @vcamx 帮你总结下,@hfeeki 想说的就是要“要有心理准备”,爬虫的纠错代码可能会占总代码量的很大比例
    leveraging
        13
    leveraging  
       2013-02-25 23:02:02 +08:00
    我一看就知道多半是gzip..
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2357 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 42ms UTC 15:50 PVG 23:50 LAX 08:50 JFK 11:50
    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