理解虚拟机的使用
由于服务器的开发往往是基于linux系统的,例如Ubuntu,Centos等等,所以如果我们是windows操作系统的个人电脑,利用虚拟机来进行相关后端的学习是非常有好处的,这里只陈述在开发时物理机和虚拟机的python文件的逻辑关系。
本地windows物理机需要有python解释器,pycharm;
pycharm是对本地文件进行编辑的;
虚拟Ubuntu机需要有python解释器;
以上一篇下载一张图片的脚本为例,如果我们运行了Ubuntu虚拟机,通过pycharm创建的文件是在本地的,由于pycharm连接了虚拟机,可以设置自动上传文件,会将我们的本地创建的脚本上传到虚拟机中,在本地运行时,其实是通过虚拟机的解释器来运行虚拟机上的文件,因此我们在程序最后的将图片写入文件中这一操作产生的图片文件,在本地中是不会有的,在pycharm的项目目录中就不会看到,但是虚拟机中的对应的项目目录已经创建图片了,所以我们需要通过pycharm的Romote Host这个窗口将虚拟机中的图片下载到本地。
urllib库的使用
爬虫开发时,一般不会使用这个库,但是我们需要学习这个库。
urllib库简介
urllib是一个用来处理网络请求的python标准库,它包含4个模块
- urllib.requests:请求模块,用于发起网络请求
- urllib.parse:解析模块,用于解析
- urllib.error:异常处理模块,用于处理request引起的异常
- urllib.robotparse:用于解析robots.txt文件
urllib.request模块
request模块主要负责构造和发起网络请求,并在其中添加Hearders,Proxy等。利用它可以模拟浏览器的请求发起过程——1.发起网络请求;2.操作cookie;3.添加Hearders;4.使用代理
方法:
urrlib.request.urlopen(url,data=None,[timeout,]*,cafile=None,capath=None,cadefault=False,context=None)
urlopen是一个简单发送网络请求的方法。它接收一个字符串格式的url,它会向传入的url发送网络请求,然后返回结果
from urllib import request
response = request.urlopen(rul='http://httpbin.org/get')
urlopen默认会发送GET请求,当传入data参数时,则会发起POST请求。data参数是字节类型、或者类文件对象或可迭代对象。
response = request.urlopen(url='http://httpbin.org/post',data=b'username=wgdh&password=123456')
还可以设置超时,如果请求超过设置时间,则抛出异常。timeout没有指定则用系统默认设置,timeout只对http,https以及ftp连接起作用,它以秒为单位,比如可以设置timeout=0.1 超时时间为0.1秒
reponse = request.urlopen(url='http://www.baidu.com',timeout=0.1)
以下是通过request代理的脚本:
from urllib import request
'''
urllib库
'''
# 设置超时
request.urlopen("http://httpbin.org/get",timeout=0.1)
# 发送一个get请求
response = request.urlopen(url="http://httpbin.org/get")
# 发送一个post请求
response2 = request.urlopen(
url="http://httpbin.org/post",
data = b'username=wgdh&password=123456'
)
urllib.Response对象
urllib库中的类或者方法,在发送网络请求后,都会返回一个urllib.response的对象,它包含了请求回来的数据结果。并且还包含了一些属性和方法,供我们处理返回的结果
- read()获取响应返回的数据,只能用一次
print(reponse.read())
- readline()读取一行
while True