美文网首页Python
Python入门---爬虫

Python入门---爬虫

作者: 达克与皮哥 | 来源:发表于2018-02-05 20:40 被阅读0次

    私以为学习Python最好从爬虫开始,python对爬虫是如此的友好,支持库琳琅满目,而且爬取数据对于以后的学习又能助一把力,不可谓是一举多得。

    一、urllib

    urllib库就能完美实现一个爬虫,从最简单的urllib.request.urlopen(url='url',timeout=2000)就能打开大部分网站。

    from urllib import request

    url="https://www.baidu.com" 

    response=urllib.request.urlopen(url,timeout=2000)

    result=response.read()

    在深入一点的,加入了登录功能的,就需要分析提交的表单数据,使用Chrome的开发者工具就能够抓取到对应的提交的数据表单。

    比如下面的内容就是简书登录时产生的数据表单:

    utf8:

    authenticity_token:

    EYhTNTf7Wj8tlEv4sDUHbZlHx8y6/1z2i1OjuABaqUFFYxKB+Y6mdYl5jLDx/LxFvWJTi9nAjnsKpnW2JXmXEA==

    session[email_or_mobile_number]:

    username

    session[password]:

    password

    session[oversea]:

    false

    captcha[validation][challenge]:

    b62a5209c2b8f67190852ad81b2401ea

    captcha[validation][gt]:

    ec47641997d5292180681a247db3c92e

    captcha[validation][validate]:

    6452b851cf3f05f9d232dc8aa4b3f6d6

    captcha[validation][seccode]:

    6452b851cf3f05f9d232dc8aa4b3f6d6|jordan

    captcha[id]:

    geetest_challenge:

    b62a5209c2b8f67190852ad81b2401ea

    geetest_validate:

    6452b851cf3f05f9d232dc8aa4b3f6d6

    geetest_seccode:

    6452b851cf3f05f9d232dc8aa4b3f6d6|jordan

    session[remember_me]:

    true

    commit:

    登录

    当然,仅仅学会抓取表单并不代表就能成功实现登录,因为有些网站或多或少会使用一些动态的验证手段,遇到这种情况,可以先抓取登录页面中的表单内容,然后填入要提交的表单中,基本上就能实现成功登录了。

    登录后可以使用 Cookielib来保存cookies,在PY3中为http.cookiejar。

    import http.cookiejar

    cj = http.cookiejar.CookieJar()

    opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))

    param={"authenticity_token":"EYhTNTf7Wj8tlEv4sDUHbZlHx8y6/1z2i1OjuABaqUFFYxKB+Y6mdYl5jLDx/LxFvWJTi9nAjnsKpnW2JXmXEA==",

    "session[email_or_mobile_number]":"username",

    "session[password]":"password",

    "session[oversea]":"false"

    }

    data=urllib.parse.urlencode(param)

    header = {

    "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",

    "Accept-Encoding":"utf-8",

    "Accept-Language":"zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3",

    "Connection":"keep-alive",

    "Host":"c.highpin.cn",

    "Referer":"http://c.highpin.cn/",

    "User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0"

    }

    request=urllib.request.Request(url,data,header)

    response= opener.open(request)

    res=response.read()

    另外还有一些库提供了一些别的支持,像ntlm提供认证支持,bs4提供解析支持,还有urllib里面的proxyhandler等等有的时候也有很大的作用

    相关文章

      网友评论

        本文标题:Python入门---爬虫

        本文链接:https://www.haomeiwen.com/subject/rshvzxtx.html