基于python爬虫的简单实现

最近做实验需要从网上搜集一些数据集,于是简单的学习了一下Python爬虫。记录在此,也便于自己复习吧。

1.概述:关于爬虫

众所周知,爬虫即从网上获取图片,文本,视频等数据信息。在学习爬虫之前先来了解一下爬虫的三个分类。
1, 爬取网页,小规模,数据量小,对爬取速度要求不高,通常使用的工具:requests库。占据爬虫的90%以上。
2, 爬取网站,中规模, 爬取速度敏感 使用的工具:Scrapy库。
3, 爬取全网,大规模, 爬取速度关键,定制开发。
所以这里作为简单入门案例,仅仅讲述requests库的用法。

2.使用Requests库爬取网页

最常用的requests的方法是requests.get() , 和requests.request()方法,其实两种方法都能达到同样的效果,简单起见这里只介绍如何使用get()方法爬取网页信息。
get方法网络爬虫基本流程

  1. 先指定要爬取的网址
    url = “http://www.baidu.com
  2. 调用request.get()方法, 传入网址,这里是url, 返回的是一个response对象(包含了网页的信息),是不是非常简单呢!
    r = requests.get(url)
  3. 查看状态码, 直接调用r.status_code, 结果为200表示链接成功,最常见的404是找不到网页,当然还有别的错误代码,反正这里只要结果是200就表示链接成功。
    r.status_code
  4. 指定解码方式:r.encoding = r.apparent_encoding, 可以使用r.encoding来查看所爬取的网页的编码信息, 使用上面这句代码来指定解码方式, r.apparent_encoding(应该使用哪种编码显示),又称备选编码方式。总之可以将网页解码成可读的。
  5. 打印出网页的信息。 print(t.text)

3. 爬虫的两个简单实例

  1. 下面给出一段标准的代码框架供大家参考:
#首先肯定是导入requests库
import requests
# 通用标准代码块使得用户爬取网页的效果更加稳定
def getHtmlText(url):
    # 网络链接有风险,异常处理很重要
    try:
        # 发起一个request,得到一个response
        r = requests.get(url, timeout=30)
        # 链接的状态吗如果不是200将会引发异常
        r.raise_for_status()
        # 改变编码格式,使得网络可以显示
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return "产生异常"

if __name__ == '__main__':
    url = "http://www.baidu.com"
    #打印网页信息
    print(getHtmlText(url))
    

  1. 下面是一个爬取图片并且保存的实例。注意网络上图片的地址是右键,然后复制图片的地址。
#还是先导入request库, 和os模块
import requests
import os
url = "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1542003261001&di=07b574ec8afee2f33d92f21b5a33e563&imgtype=0&src=http%3A%2F%2Fimg.wzrb.com.cn%2Farticlefile%2F20181023%2F20181023159349.jpg"
#保存图片的目录
root = "imgs/"
#图片的路径,名称是a.jpg,可以改成别的
path = root + "a.jpg"
try:
#目录不存在的话会创建目录
    if not os.path.exists(root):
        os.makedirs(root)
   # 图片不存在的情况下才会爬取图片
    if not os.path.exists(path):
        r = requests.get(url)
        with open(path, "wb") as f:
            f.write(r.content)
            f.close()
            print("文件保存成功")
    else:
        print("文件已经存在")
except:
    print("爬取失败")

好了,这就是一个简单的爬取图片的代码,可以说是十分简单了。今天先到这里,实验室大爷要关门了。。

猜你喜欢

转载自blog.csdn.net/qq_41559533/article/details/84000031