美文网首页
Python数据分析与挖掘实战之爬虫浏览器伪装技术

Python数据分析与挖掘实战之爬虫浏览器伪装技术

作者: 我是Python小白 | 来源:发表于2017-12-20 19:33 被阅读38次

    浏览器伪装技术原理

    我们可以试试爬取csdn博客,我们发现会返回403,因为对方服务器会 对爬虫进行屏蔽。此时,我们需要伪装成浏览器才能爬取。
    浏览器伪装我们一般通过报头进行

    浏览器伪装技术实战

    有很多网站为了防止程序爬虫爬网站造成网站瘫痪,会需要携带一些headers头部信息才能访问,最长见的有user-agent参数

    写一个简单的例子:

    import urllib.request
    
    request = urllib.request.Request('https://python.org')
    response = urllib.request.urlopen(request)
    print(response.read().decode('utf-8'))
    

    给请求添加头部信息,从而定制自己请求网站是时的头部信息

    from urllib import request, parse
    
    url = 'http://httpbin.org/post'
    headers = {
        'User-Agent': 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)',
        'Host': 'httpbin.org'
    }
    dict = {
        'name': 'zhaofan'
    }
    data = bytes(parse.urlencode(dict), encoding='utf8')
    req = request.Request(url=url, data=data, headers=headers, method='POST')
    response = request.urlopen(req)
    print(response.read().decode('utf-8'))
    

    添加请求头的第二种方式

    from urllib import request, parse
    
    url = 'http://httpbin.org/post'
    dict = {
        'name': 'Germey'
    }
    data = bytes(parse.urlencode(dict), encoding='utf8')
    req = request.Request(url=url, data=data, method='POST')
    req.add_header('User-Agent', 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)')
    response = request.urlopen(req)
    print(response.read().decode('utf-8'))
    

    这种添加方式有个好处是自己可以定义一个请求头字典,然后循环进行添加

    相关文章

      网友评论

          本文标题:Python数据分析与挖掘实战之爬虫浏览器伪装技术

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