• 爬虫实例系列一(requests)


    一 爬虫简介

    '''
    爬虫:通过编写程序,模拟浏览器上网,让其去互联网上爬取数据的过程

    分类:
    通用爬虫:爬取全部的页面数据
    聚焦爬虫:抓取页面中局部数据
    增量式爬虫:爬取网站中更新出的数据

    反爬机制:门户网站会通过制定相关的技术手段,组织爬虫程序进行数据获取
    反反爬策略:针对反爬机制制定的策略,为了获取数据

    第一个反爬机制:
    robots.txt协议:防君子不防小人的协议
    '''

    二  request 入门使用流程

    '''

    request使用流程:
    - 制定url
    - 发起请求
    - 获取响应回来的页面数据
    - 持久化存储

    '''

    三 实例

    1 获取搜狗页面(反反爬机制:防君子不防小人)

    import requests
    
    #获取搜狗页面数据
    
    #1.指定url
    url='https://www.sogo.com/'
    
    #2.发起请求
    response=requests.get(url=url)
    
    #3.获取页面数据
    response_text=response.text
    
    #4.持久化存储
    with open('sogo.html',mode='w',encoding='utf8') as f:
        f.write(response_text)

    2 获取知乎页面数据(UA伪装)

    '''
    User-Agent:请求载体的身份标识
    反爬机制:UA检测
    反反爬策略:UA伪装
    '''
    #请求知乎
    
    url='https://www.zhihu.com/'
    
    #指定请求头,进行UA伪装
    headers={
        'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.20 Safari/537.36'
    }
    response=requests.get(url=url,headers=headers)
    
    print(response.text)

    3 post请求实例(请求百度翻译结果)

    #请求百度翻译结果
    
    #经过分析发现,百度翻译发送的请求是ajax请求
    import requests
    
    url='https://fanyi.baidu.com/sug'
    
    #指定请求头,进行UA伪装
    headers={
        'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.20 Safari/537.36'
    }
    
    #搜索数据不要写死
    
    kw=input('input a word:')
    #构建请求数据
    data={
        'kw':kw
    }
    
    response=requests.post(url=url,headers=headers,data=data)
    
    print(response.json())

    4 post 请求携带更多参数data={}

    #爬取城市肯德基餐厅的位置信息 http://www.kfc.com.cn/kfccda/storelist/index.aspx
    
    '''
    抓包获取的数据
    Request URL: http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword
    Request Method: POST
    Status Code: 200 OK
    Remote Address: 120.92.131.8:80
    Referrer Policy: no-referrer-when-downgrade
    '''
    
    import requests
    
    url='http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword'
    
    headers={
        'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.20 Safari/537.36'
    }
    
    data={
        'cname':'',
        'pid':'',
        'keyword': '深圳',
        'pageIndex': 3,
        'pageSize': 10,
    }
    
    response=requests.post(url=url,headers=headers,data=data)
    
    print(response.json())

    5 爬取豆瓣电影中的详细数据(ajax请求)

    import requests
    
    #爬取豆瓣电影中的详细数据(ajax请求)
    
    #'https://movie.douban.com/j/chart/top_list?type=24&interval_id=100%3A90&action=&start=20&limit=20'
    
    url='https://movie.douban.com/j/chart/top_list'
    
    headers={
        'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.20 Safari/537.36'
    }
    #此处参数已经写死,后续项目中在此基础修改
    params={
        'type': '24',
        'interval_id': '100:90',
        'action':'',
        'start':'40',
        'limit':'20',
    }
    
    response=requests.get(url=url,headers=headers,params=params)
    
    print(response.json())



  • 相关阅读:
    从DataGridViewer导出Excel
    C#获取特定进程CPU和内存使用率
    51 nod 1265 四点共面
    51nod 1384 全排列
    51nod 2006 飞行员配对
    codeforces 839A
    codeforce 837C
    codeforces 837B
    codoforces 837A
    GIT
  • 原文地址:https://www.cnblogs.com/angle6-liu/p/10437482.html
Copyright © 2020-2023  润新知