在第二天学习了更深入的网页爬取,在昨天学习了初步的爬虫技术后,进行了对百度网页的爬取,今天学习了从网站上爬取表情包以及查询电话号的信息,首先了解了Requests库,有对这个库的下载方法以及检测方法,开发过程中,requests常见方法可能使用到的Http请求有Post,Delete,Put,Get,分别应对增删改查,并且在具有这么多请求方式的我们使用哪一种是由目标网站的开发者决定,get占位大多数,其实很好确定请求方式,爬虫一般选择XHR和Doc,我们可以在网站上查找出,r=requests.getr(url),前面的r代表返回一个包含response的对象,后面的r代表构造一个向服务器请求资源的Requests对象,由服务端返回给客户端包含响应状态码响应头和响应体,发送出请求后就会获得信息,如文本,状态码,cookies等很多网站信息,r.encoding是猜测的内容编码方式,r.apprent_encoding是从内容中分析出的响应内容编码方式,今天进行的第一个内容为qq表情包进行下载,我的代码如下
import requests def get_image(url): try: r = requests.get(url, timeout=10) r.raise_for_status() return r.content except Exception as err: print(err) def save_image(path, content): with open(path, "wb") as f: f.write(content) if __name__ == "__main__": url_list = [ "http://www.bspider.top/static/yh31/images/202103182012577973.gif", "http://www.bspider.top/static/yh31/images/201808102113018176.gif" ] save_dir = "D:\\\\" for url in url_list: image_content = get_image(url) file_name = url.split("/")[-1:][0] path = save_dir + file_name save_image(path, image_content)
起初我还是有一切错误,程序可以运行出来但是始终保存不到路径里,随后修正了路径分割符号和冒号运行后表情包成功出现在D盘中。
在此之后又学习了Requests实现模拟登录,了解了cookie,就是用来判断用户是否登录过网站,网站可以留下一些信息,我们通过浏览器开发者工具就可以看到cookies,还有session机制,是一种服务器的机制,可以用列表来保存信息,可以在为用户创建一个Session时,服务器会检查cookies中是否包含了Session标识,cookies可以保存session id,服务器也可以通过URL重写的方式传递Session id。Requests库模拟会话进入第一种可以利用cookie直接登录,利用session方法登录网站。接下来是爬取手机号码归属地的代码
import requests from urllib import parse def get_html(url, time=10): head = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0" } try: r = requests.get(url, headers=head, timeout=time) r.encoding = r.apparent_encoding r.raise_for_status() return r.text except Exception as error: print(error) if __name__ == "__main__": parm = { "mobile": "18604731649", "action": "mobile" } p = parse.urlencode(parm) url = "https://www.ip138.com/mobile.asp?" url = url + p print(url) print(get_html(url))
最后也成功打开了手机码归属地查询的网页,今天主要学习到了更深度的爬取,了解Cookie与Session的运行机制,个人认为今天学习最深的就是对Cookie和Session的各种含义和在网站中的各司其职有一个认知,又是收获满满的一天。