准备
python
为3.6
的版本
1.我们先偷偷的爬一下百度
页面是由HTML
+CSS
+JavaScript
组成,HTML是页面骨架内容所在,CSS是页面的装饰所在,JavaScript是负责页面交互的,
我们爬虫是为了获取页面内容的,重点就是获取HTML里的文字内容。
1 2 3 4
| import urllib.request response = urllib.request.urlopen('http://www.baidu.com') print(response.read())
|
把代码保存到demo.py, 在命令行运行python demo.py
我们就能看到结果
2.urllib.request方法
urllib.request.urlopen(url, data, timeout)
url
是请求地址
data
是要发往服务端的数据,默认为None
timeout
是超市时间,默认为全局设置的超时时间
3.Request构造方法
Request方法的参数
urllib.request.Request(url,data = None,headers = {},origin_req_host = None,unverifiable = False,method = None )
1 2 3 4 5
| import urllib.request request = urllib.request.Request('http://www.baidu.com') response = urllib.request.urlopen(request) print(response.read())
|
GET和POST方式传参
1 2 3 4 5 6 7 8 9
| from urllib import request, parse data = {} data['wd'] = 'PHP是世界上最美好的语言' data = parse.urlencode(data) data = data.encode('utf-8') response = request.urlopen('https://cn.bing.com/search', data) print(response.read().decode('utf-8'))
|
像其他都是类似的,比如发一个PUT
请求
1 2 3 4 5 6 7
| import urllib.request DATA = b'some data' req = urllib.request.Request(url='http://localhost:8080', data=DATA,method='PUT') with urllib.request.urlopen(req) as f: pass print(f.status) print(f.reason)
|