关于爬虫学习的一些小小记录(一)——简单粗暴的爬虫

关于爬虫学习的一些小小记录(一)——简单粗暴的爬虫

  • 前言
  • 爬虫简介
  • 最简单的爬虫程序
    • urllib库
    • urlopen方法
    • HttpResponse类
    • resquests库
  • 结语

前言

这算是我写的第一篇博客
但其实,本人学习爬虫已经有那么一段时间了,现在勉强算是个老菜鸟……
至于为什么现在才写这样的一篇文章,因为我发现如果没有通过这样高大上的记录方式,我那些浅薄的知识就会跟头发一样,不知不觉间就消失了 (T_T)
所以我写的内容可能都比较浅显,如果其中的部分内容跟你们的理解有所出入,大家不妨在评论区留言,我们一起探讨学习

爬虫简介

爬虫是什么?
我们大都知道,所以这里就不介绍了 ……
这是百度的介绍:爬虫-百度百科

那么怎么学习爬虫?
这是知乎上关于怎么学习爬虫的回答:如何入门 Python 爬虫?

最简单的爬虫程序

这是一个简单的爬虫程序,用于访问百度的首页,并下载网页源代码
编译器版本:Python3.7

from urllib import request

url = 'http://www.baidu.com/'

response = request.urlopen(url)  # 访问url,返回一个 HttpResponse 对象
page = response.read()  # 使用 read 方法读取页面全部内容
page = page.decode()  # 因为 page 的数据格式为 bytes ,需要转码成 utf-8

print(page)  # 打印

urllib库

urllib是Python的一个扩展库,用于对url进行处理
在这个爬虫程序中,我们导入了 urllib 库的request模块,该模块中定义了用于访问 url 的 urlopen() 方法,该方法返回一个 HttpResponse 类对象

urlopen方法

urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)

几个主要参数:
url,需要打开的网址,可以是字符串或 Request类对象
data,指定要发送到服务器的其他数据的对象,默认None
timeout,尝试连接网站的超时时间(单位秒),如果未指定,将使用全局默认超时

HttpResponse类

有如下的方法:

getcode() 返回响应的 HTTP 状态代码,200或404

geturl() 返回请求的 url,通常用于确定是否遵循重定向

info() 以 email.message_from_string() 实例的形式返回页面的元信息

read()readline() 用于对 HttpResponse 类型数据进行读取操作。不同的是前者读取全部内容,后者只读取某一行

resquests库

requests 库是基于 urllib 开发的另外一个常用的爬虫工具,相比起 urllib 更为简便
同样是一个简单的爬虫:

import requests

url = 'http://www.baidu.com/'
page = requests.get(url)  # 访问 url

print(page.text)  # 以字符串方式打印

get()方法打开 url,返回一个 Response 对象,该对象存储了服务器的响应的内容

requests 会自动解码来自服务器的内容,不需要我们再进行手动解码

例如:当访问 Response.text 时,会使用其推测的文本编码,然后以这种编码方式输出响应内容。当然你想要的看字节形式的内容,也可以通过访问 Response.content 来获取。除此之外,还有内置的 JSON 解码器 Response.json 等

可以说,resquests库绝对是懒人的选择

结语

作为第一篇博客,其实不需要多么出彩,好戏都在后头(这绝对不是一个 flag!)

你可能感兴趣的:(Python,爬虫)