作为一名不合格的电气汪,编程基础较为薄弱,之前仅简单接触过C和MATLAB。
最近对Python有点儿兴趣,天天胡乱的敲代码知识不成体系,效率不高也没有针对性,因此想在这里记录下自己的学习过程,不然不出一周指定全忘光!!!
参考‘逆風的薔薇’的教程,《Python3爬虫》-简单网页抓取
代码
'''
三引号可以用来表示多行注释
也可以用来表示多行字符串
'''
'''
from *package import *module 后续直接引用即可
from *package.*mudule 后续引用时需要加上package名称
'''
# import urllib.request
from urllib import request
# 网址
url = 'http://www.douban.com/'
# request = urllib.request.Request(ur1)
# response = urllib.request.urlopen(request)
req = request.Request(url) # 生成一个Request对象,这句可以没有,直接对url操作也可以
res = request.urlopen(req) # urlopen打开一个url,可以是string或是Request对象
data = res.read()
# 设置解码方式
data = data.decode('utf-8')
print(data)
# 打印爬取网页的各类信息
print(type(res))
print(res.geturl())
print(res.info())
print(res.getcode())
运行结果
截取部分结果如图:
笔记
关于urllib包的说明,https://docs.python.org/3.5/library/urllib.html
- urllib为一个package
- request为urllib下的一个module
- urlopen为request下的一个function
- urlopen有一个位置参数url,可以是一个字符串,也可以是一个Request对象。
urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None) - decode将其他编码的字符串转换成unicode编码,这里将utf-8编码的字符串转换为unicode编码,关于编码部分的基本知识可以参考廖雪峰教程
https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431664106267f12e9bef7ee14cf6a8776a479bdec9b9000 - 原教程中请求结果赋值给变量request,与模块名request重复,这样在后续再次调用request模块的时候必须声明对应的urllib包,不推荐这样操作。
# 请求
request = urllib.request.Request(url)
# 爬取结果
response = urllib.request.urlopen(request)