爬虫基础系列urllib——构造请求头(3)

作者: 猛犸象和剑齿虎 | 来源:发表于2019-05-04 06:06 被阅读2次
    u=2998242485,1841996514&fm=27&gp=0.jpg

    爬虫与反爬虫

    • 爬虫:自动获取网站数据的程序
    • 反爬虫:使用技术手段防止爬虫程序爬取数据

    反扒机制1

    • 判断用户是否是浏览器访问
    • urllib.request.urlopen(url)方法采用的是直接通过代码,而不是浏览器访问页面,那么反爬虫机制很容易识别,从而禁止爬虫爬取。

    应对办法

    • 爬虫加上第一层伪装,伪装成浏览器对网站进行爬取。
    • request.Request(url,headers=header)创建自定义请求对象,这里需要注意的是,header构造的User-Agent是一个字典形式的结构。
    • 这里用到user-agent 请求头信息,请求头user-agent打开一个网页,按F12,点击network 或者网络(浏览器不一样,名称略有区别),可以看到Request Headers中User-Agent数据,将这个数据传入请求中,达到模拟浏览器的目的,同样的User-Agent可以在网上搜索各种类型的浏览器的请求头信息。
    • 完整代码:
    #伪装浏览器的爬虫
    from urllib import request
    import re
    
    url="http://www.baidu.com/"
    
    #构造请求头信息
    header={
    'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
    }
    req=request.Request(url,headers=header)
    #发送请求.获取响应信息
    reponse=request.urlopen(req).read().decode() #解码---(编码encode())
    pat=r"<title>(.*?)</title>"
    data=re.findall(pat,reponse)
    print(data[0])#由于data返回的是列表形式的数据用data[0]直接取值
    

    运行返回的结果为:

    百度一下 你就知道
    

    这里会发现数据外没有了[]。


    图片来自网络.png

    爬虫基础系列urllib(2)

    相关文章

      网友评论

        本文标题:爬虫基础系列urllib——构造请求头(3)

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