zoukankan      html  css  js  c++  java
  • 爬虫之requests库

    想用selenium实现B站自动登录以及点赞等功能,便查阅如何解决滑动解锁,然而是有关爬虫的内容,便开始学习爬虫,没过多久又想把记录自己生活的网站做起来,朋友便推荐了layui框架倒腾了一晚上自我觉得是做给后端程序员入门的框架,Vue又感觉太难,便开始搞bootstrap,没搞出个所以然来。因为闲着心情烦躁便开始重新学习爬虫。每次写点文章总是碎碎念一段,有人在评论去区说我矫情,是真的。

    安装:pip install requests

    http请求返回response对象属性

     编码问题

    import requests
    r=requests.get('http://www.baidu.com/')
    r.encoding='gbk' 或  r.encoding=r.apparent_encoding
     #百度返回的页面内容为ISO-8859-1编码的,如果不设置成gbk则乱码
    print(response.text)
    

     requests的库异常处理

    requests库的主要方法

    1 import requests
    2 r = requests.get('https://www.cnblogs.com/')
    3 r = requests.head('http://httpbin.org/get')
    4 r = requests.post('http://httpbin.org/post',key='value')
    5 r = requests.put('http://httpbin.org/put',key='value')
    6 r = requests.patch('http://httpbin.org/patch',key='value')
    7 r = requests.options('http://httpbin.org/get')
    8 r = requests.delete('http://httpbin.org/delete')

    爬取网页通用框架

     1 import requests
     2 def get_Html(url):
     3     try:
     4         r = requests.get(url,timeout=30)
     5         r.raise_for_status()
     6         r.encoding=r.apparent_encoding
     7         return r.text
     8     except:
     9         return "产生异常"
    10 
    11 if __name__=="__main__":
    12     url = "http://www.baidu.com"
    13     print(get_Html(url))

    几个小案例

    案例一 京东商品爬取
    import requests
    url = 'https://item.jd.com/100010131982.html'
    try:
        r = requests.get(url)
        r.raise_for_status()
        r.encoding=r.apparent_encoding 
        print(r.text[:1000]) #1000代表截取前1000个字符
    except:
        print("爬取失败")
    案例二 亚马逊
    import requests
    url = 'https://www.amazon.cn/dp/B08531C6PV/ref=s9_acsd_hps_bw_c2_x_1_i?pf_rd_m=A1U5RCOVU0NYF2&pf_rd_s=merchandised-search-top-3&pf_rd_r=XXHRT6R61ZYZA5FGMPKJ&pf_rd_t=101&pf_rd_p=b2e55b79-7940-4444-967a-6dbe6d7cb574&pf_rd_i=1935403071'
    try:
        kv = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36'} #模拟浏览器
        r= requests.get(url,headers = kv)
        r.raise_for_status()
        r.encoding=r.apparent_encoding
        print(r.text[1000:2000])
    except:
        print("爬取失败")
    案例三 百度
    import requests
    kv = {'wd':'python'}
    r = requests.get('http://www.baidu.com/s',params=kv)
    print(r.requests.url)
    print(len(r.text))

    等学到新的就来更新,我记得刚学的时候我就开始爬贴吧了,现在老老实实看基础了


    未完待续!

  • 相关阅读:
    BZOJ2697 特技飞行 【贪心】
    BZOJ2795/2890/3647 [Poi2012]A Horrible Poem 【字符串hash】
    BZOJ2823 [AHOI2012]信号塔 【最小圆覆盖】
    BZOJ2924 [Poi1998]Flat broken lines 【Dilworth定理 + 树状数组】
    洛谷P3759 [TJOI2017]不勤劳的图书管理员 【树状数组套主席树】
    POJ 2955
    江南大学第三届程序设计竞赛K题
    Codeforces 894C
    Codeforces 894B
    HDU 1789
  • 原文地址:https://www.cnblogs.com/zqxFly/p/12492584.html
Copyright © 2011-2022 走看看