代码如下:
import urllib.request
url = r'http://douban.com'
res = urllib.request.urlopen(url)
html = res.read().decode('utf-8')
print(html)
上述代码爬取了www.baidu.com整个网站的HTML代码。下面我们来逐一分析。
import urllib.request
导入 urllib库的request模块
url = r'http://douban.com'
指定要抓取的网页url,注意:网站url必须是完整的,也就是必须http或https开头的。
res = urllib.request.urlopen(url)
调用 urlopen 从服务器获取网页响应,其返回的响应是一个实例。
html = res.read().decode('utf-8')
调用返回响应示例中的 read 函数,即可以读取html,但需要进行解码,其中 utf-8 是他的编码,这个按照要爬取的网页而定
print(html)
这个很简单,就是打印命令。
注意:一些网站的头部是不能访问的!所以可能会出现403错误!
所以我们就要伪装成浏览器。仿照http的过程,在用爬虫获取网页的时候,加入头部。
首先打开网页,按F12键,在开发者工具模式中找到网络(或network)在左边的名称(或name)一栏随便点击一个,随后在标头(或header)一栏中找到请求标头(或request headers)栏的 User-Agent ,将后面的文本复制,加入到爬虫程序中。
import urllib.request
url = r'http://douban.com'
headers ={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
req = urllib.request.Request(url=url,headers=headers)
res = urllib.request.urlopen(req)
html = res.read().decode('utf-8')
print(html)
注意:urllib.request.Request用于向服务端发送请求,就如 http 协议客户端想服务端发送请求,而 urllib.request.urlopen则相当于服务器返回的响应。