这算是我写的第一篇博客
但其实,本人学习爬虫已经有那么一段时间了,现在勉强算是个老菜鸟……
至于为什么现在才写这样的一篇文章,因为我发现如果没有通过这样高大上的记录方式,我那些浅薄的知识就会跟头发一样,不知不觉间就消失了 (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是Python的一个扩展库,用于对url进行处理
在这个爬虫程序中,我们导入了 urllib 库的request模块,该模块中定义了用于访问 url 的 urlopen() 方法,该方法返回一个 HttpResponse 类对象
urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)
几个主要参数:
url,需要打开的网址,可以是字符串或 Request类对象
data,指定要发送到服务器的其他数据的对象,默认None
timeout,尝试连接网站的超时时间(单位秒),如果未指定,将使用全局默认超时
有如下的方法:
getcode() 返回响应的 HTTP 状态代码,200或404
geturl() 返回请求的 url,通常用于确定是否遵循重定向
info() 以 email.message_from_string() 实例的形式返回页面的元信息
read() 和 readline() 用于对 HttpResponse 类型数据进行读取操作。不同的是前者读取全部内容,后者只读取某一行
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!)