美文网首页
Python 爬虫之Urllib进阶(一)

Python 爬虫之Urllib进阶(一)

作者: 42chaos | 来源:发表于2017-03-22 16:57 被阅读17次

    爬虫的特殊设置

    1.有关headers的设置

    在访问网址的时候,网站会做出对于访问的限制,比如只能PC访问,手机访问等等。这时候需要我们来改变http请求时候的headers来更好的设法绕过限制。

    User-Agent : 有些服务器或 Proxy 会通过该值来判断是否是浏览器发出的请求
    Content-Type : 在使用 REST 接口时,服务器会检查该值,用来确定 HTTP Body 中的内容该怎样解析。
    application/xml : 在 XML RPC,如 RESTful/SOAP 调用时使用
    application/json : 在 JSON RPC 调用时使用
    application/x-www-form-urlencoded : 浏览器提交 Web 表单时使用
    在使用服务器提供的 RESTful 或 SOAP 服务时, Content-Type 设置错误会导致服务器拒绝服务
    

    urllib可以这样来设置headers

    value = {"key":"value","key2":"value2"}
    data = urllib.urlencode(value)
    url = "http://www.baidu.com"
    headers = {'User-Agent':'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'}  
    request = urllib2.Request(url,data,headers)
    response = urllib2.urlopen(request)
    print response.read()
    

    这样我们边可设置访问的headers,以便更好的绕过限制。

    2.有关Proxy的设置

    很多网址对爬虫也有限制,列入ip限制等来反爬虫。这时候就需要来用代理来突破这个限制。

    import urllib2
    proxy_handler = urllib2.ProxyHandler({"http" : 'http://127.0.0.1:8080'})
    opener = urllib2.build_opener(proxy_handler)
    urllib2.install_opener(opener)
    

    这样便可设置代理

    3.超时设置

    区别有没有设置data
    没有data设置的时候

    response = urllib2.urlopen('http://www.baidu.com', timeout=10)
    

    需要写明timeout属性
    有设置data时候

    response = urllib2.urlopen('http://www.baidu.com',data, 10)
    

    4.DebugLog的使用

    import urllib2
    httpHandler = urllib2.HTTPHandler(debuglevel=1)
    httpsHandler = urllib2.HTTPSHandler(debuglevel=1)
    opener = urllib2.build_opener(httpHandler, httpsHandler)
    urllib2.install_opener(opener)
    response = urllib2.urlopen('http://www.baidu.com')
    

    这样可以把Debug Log全部打印出来,方便调试

    相关文章

      网友评论

          本文标题:Python 爬虫之Urllib进阶(一)

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