python爬虫-Requests库网络爬取实战

  • 获取电脑IP地址
  • 58同城爬取
  • scdn博客搜索
  • 视频抓取


获取电脑IP地址

我们先开始最简单的抓取页面,http://myip.ipip.net/这个网站的源代码就是返回的自己外网IP地址和地址,我们通过抓取这个界面知道我们的外网IP地址
爬取网页的编码方式默认使用的是从HTTP header中猜测的响应内容编码格式(r.encoding),但使用这个有时并不准确,所以我们直接使用从内容中分析出来的编码格式(r.apparent_encoding

import requests             #导入requests库

url = "http://myip.ipip.net/" 
try:
    r = requests.get(url)   #通过requests库的get方法
    r.raise_for_status()    #判断返回的状态码是否为200,不是200返回异常
    r.encoding = r.apparent_encoding      #将从内容中分析出来的编码作为输出的编码格式
    print(r.text)           #输出网页的源代码
except:
    print("抓取失败!")      #异常处理

运行结果

python蹭网 python爬虫外网_爬虫实战

58同城爬取

这个爬虫例子我们主要学习User-Agent的添加

import requests                         #导入requests库

url = "https://bj.58.com/"              #爬取的网页
kv = {"User-Agent": "Mozilla/5.0"}      #伪装的User-Agent,爬虫默认的是python的标识
try:
    r = requests.get(url, headers=kv, timeout=10) #将字典形式的User-Agent提交给控制参数headers,timeout是请求时间,超时返回异常
    r.raise_for_status()                #判断返回的状态码是否为200,不是200返回异常
    r.encoding = r.apparent_encoding    #将从内容中分析出来的编码作为输出的编码格式
    print(r.text[8000:9999])    #输出网页的源代码,其中[8000:9999]表示输出8000行到9999行
except:
    print("抓取失败!")                             #异常处理

运行结果

python蹭网 python爬虫外网_requests库实战_02

scdn博客搜索

这个例子适用与大部分提交搜索链接,如百度搜索,谷歌搜索,本例子是对博客搜索引擎的提交爬取
我们可以先用博客搜一个文章看URL的变化,这个是搜索一个“python爬虫”的URL:
我们可以看到“?”后面就是提交的参数,q=后面就是我们输入的搜索文字,其中中文被转换成URL编码
然后我们使用requests库中的params参数进行提交
同理,360搜索,百度搜索格式都是一样的

import requests

url = ""  #URL链接使用?前面的后面的都是参数
kv1 = {"User-Agent": "Mozilla/5.0"}         #伪装请求头
kv2 = {"q": "python爬虫-盗亦有道(二)"}      #搜索的内容
try:
    r = requests.get(url, headers=kv1, params=kv2, timeout=10)
    r.raise_for_status()                   #判断返回的状态码是否为200,不是200返回异常
    r.encoding = r.apparent_encoding       #将从内容中分析出来的编码作为输出的编码格式
    print(r.text)                          #输出内容
    #print(r.url)                          #输出提交的url链接,可以测试看看
except:
    print("抓取失败!")

运行结果

python蹭网 python爬虫外网_爬虫实战_03

视频抓取


import requests

url = "https://jdvodrvfb210d.vod.126.net/mooc-video/nos/mp4/2017/02/28/1005856315_c9a73afe9d4b4dee8060f8cd41fc5255_sd.mp4"
#这个是保存路径,下面两个分别是以链接中的名字命名和自己命名的1111.mp4,使用split方法将url链接中最后一个"/"后的名字切割出来
path = "D://软件下载//"+url.split("/")[-1]  
#path = "D://软件下载//1111.mp4"
try:
    r = requests.get(url)    
    #首先open语句,path:文件保存路径,
    # "wb":以二进制写方式打开,只能写文件,如果文件不存在,创建该文件;如果文件已存在,先清空,再打开文件
    #然后是with-as语句,对资源进行访问时,确保不管使用过程中是否发生异常都会执行必要的“清理”操作,释放资源,如文件的自动关闭
    with open(path, "wb") as file:     
        #使用requests对象content(HTTP响应内容的二进制形式),将视频以二进制形式写入文件中
        file.write(r.content)
        print("视频下载成功!")
except:
    print("抓取失败!")

运行结果

python蹭网 python爬虫外网_python爬虫_04


python蹭网 python爬虫外网_爬虫实战_05