初识爬虫
未来是数据的时代,想要获取数据,那么爬虫无疑是很好的一种手段。不同的编程语言都有不同的爬虫方式,python无疑是其中一种有着比较完善方案的选择,所以我选择以python作为我爬虫的起点。
安装
python官网下载3.5版本,安装,并将python加入环境变量中,这里不再叙述,pip安装requests库
import requests
re = requests.get('https://www.baidu.com')
print(re.status_code)
print(re.encoding)
re.encoding = 'utf-8'
print(re.text)
简单上面几行代码,就实现了python对网页的抓取,接下来详细分析一下requests库的使用。
request库的7个基本方法
方法 | 参数 | 说明 |
---|---|---|
request | method 请求方法<br>url 模拟页面的url链接<br>**kwargs 控制访问的参数,共13个 | 构造一个请求,是一下方法的基础方法 |
get | url,模拟页面的url连接, params=null,url中的额外参数,字典或字节流格式,可选, **kwargs,12个控制访问的参数 | 获取HTML网页的主要方法,对应于HTTP的GET |
post | url, **kwargs | 向HTML网页提交POST请求的方法,对应于HTTP的POST |
head | url, **kwargs | 获取HTML网页头信息的方法,对应于HTTP的HEAD |
put | url, **kwargs | 向HTML网页提交PUT请求的方法,对应于HTTP的PUT |
patch | url, **kwargs | 向HTML网页提交局部修改请求,对应于HTTP的PATCH |
delete | url, **kwargs | 向HTML页面提交删除请求,对应于HTTP的DELETE |
以上方法都是构造一个request对象发送给服务器,并返回一个response对象
举例
- 如果要向一个链接post过去一个json,那么有两种办法
import requests
import json
r = requests.post(url,data=json.dumps(var))
#这里的var是字典
#或者
r = request.post(url,json=var)
#这里的var是json字符串
- 如果请求页面通过判断User-Agent拒绝python爬虫的访问,那么可以通过修改User-Agent来重新访问
import requests
url = "http://xxxx";
ug = {'user-agent': 'mozilla/5.0'}
try :
r.request(url, header=ug)
r.raise_for_status()
r.encoding = r.apprent_encoding
print(t.text[1000:2000])
except:
print('爬取失败')
- 抓取图片小例子
import requests
import os
url = "http://pic.58pic.com/58pic/15/41/51/78v58PICkWh_1024.jpg"
root = "/Users/heihei/Desktop/py_pic/"
path = root + url.split('/')[-1]
try :
if not os.path.exists(root) :
os.mkdir(root)
if not os.path.exists(path) :
r = requests.get(url)
with open(path, 'wb') as f :
f.write(r.content)
f.close()
print('文件保存成功')
else :
print('文件已存在')
except :
print('爬取失败')