参考资料:北京理工大学 嵩天《python网络爬虫与信息提取》
1、简单的HTML知识
1.1、访问网页过程
我们正常访问网络,一般包含两个过程,第一步我们需要向服务器发送一个请求(request),服务器根据得到的请求给予回应(response)。回应就会包含所需要的数据内容,但是这些数据内容可能按照某种编码方式进行编码。
1.2、url格式
http://host[:port][path]
其中post是合法域名或者一个IP地址,port是服务器能够响应的端口,一般默认缺省为80,path是服务器内部资源路径
2、requests模块
2.1、requests的返回值
requests模块是第三方模块,可以轻松实现获取网页内容。他可以向服务器发送一个request请求,得到服务器的response回应。这两个在Python中都是一种标准的类对象,可以查看对象的一些信息。
import requests
r=requests.get('https://www.baidu.com')
#获取response对象的标准码,200是得到正确的返回信息
r.status.code
#从返回的response对象的header中猜测编码方式
r.encoding
#从返回的response对象的正文中猜测编码方式
r.apparent_encoding
#将返回的response对象的改成为二进制数据
r.content
上述是可以获得基本信息的几个命令,其中如果返回的header中没有charset对象(声明编码方式),则默认encoding的返回值是ISO-8859-1。
2.2、requests的用法
requests模块一共有7个函数,分别为request、get、head、post、put、patch、delate。
request是requests模块里的最基础函数,request(method,URL,*kw),其余6个函数都是将method方法改为对应方法之后进行封装完成的函数。
1、get:获得URL对应外置的资源信息
2、head:获得URL位置资源的头部信息
3、post:在对应位置后追加上相应的信息
4、put:在对应位置上增加一个对应信息,覆盖原始值
5、patch:在对应位置是更新一个对应信息,就地修改
6、delate:在对应位置上删除一个信息
由于服务器安全性的考虑,所以一般用户无法向服务器写入数据,所以post、patch、put等目前暂时使用并不多。
其中每一个函数还对应的有13个可选参数:
params,data,json,headers,cookie,auth,files,timeout,proxies,allow-redirects,stream,verify,cert.
其中params,headers,timeout用的比较多,下面具体介绍相关用法:
1、params,可以把params的值添加到URL中,从而获取新的URL位置的资源。
2、headers可以修改请求头,避免服务器拒绝访问数据。
3、timeout可以设置响应时间。
3、robots协议
协议就是单纯协议而已,他会告知爬虫哪些可以抓取,一般遵守比较好,想突破应该也可以,但是不建议这样做。
可以通过网址后加/robots.txt查看具体协议内容,一般格式如下:
user-agent:
Disallow:
4、爬虫的一般写法
def getHTML(url)
import requests
try:
kv={'user-agent':'Mozilla/5.0'}
r=requests.get(url,headers=kv,timeout=30)
r.raise_for_status()
r.encoding=r.apparent_encoding
return r.text[:1000]
except:
return '产生异常'
这种写法可以避免产生一些常见错误,也能够准确得知是否真的从服务器获取到真是准确的值。
网友评论