python爬虫学习14
-
get 请求
-
简单的GET请求
# HTTP 中最常见的请求之一就是GET请求,首先首先来详细了解一下利用requests库构建GET请求的方法。 # 下面构建一个最简单的请求,请求的链接为 https://www.httpbin.org/get,该网站会判断用户发起的是否为get请求 import requests resp = requests.get('https://www.httpbin.org/get') print(resp.text) # 可以发现我们成功的发送了请求,返回结果中包含请求头、URL、IP等信息。
运行结果:
-
附加信息的GET请求
# 附加信息的get请求 # 例如现在要添加两个参数 name 和 age import requests # 方法一 直接改造 url url = 'https://www.httpbin.org/get?name=germy&age=25' resp = requests.get(url) print(resp.text) # 方法二 利用字典传参 url = 'https://www.httpbin.org/get' data = { 'name': 'germy' , 'age': '25' } resp = requests.get(url, params=data) print(resp.text)
运行结果:
不用看了啊,一毛一样
-
返回值的类型
-
返回值的类型为 str型 但是实际上这种字符串有一种特殊的格式——json。
# 直接解析结果,得到一个JSON格式的数据,可以直接调用JSON方法 # 返回值的JSON格式 import requests resp = requests.get('https://www.httpbin.org/get') print(type(resp.text)) # resp.text 的格式是 str json0 = resp.json() print(json0,type(json0),sep='\n') #json0 的格式是 dict
运行结果:
-
-
抓取网页
# 直接抓取网页 # 抓取网页 import requests import re url = 'https://ssr1.scrape.center/' r = requests.get(url) # 使用基本正则表达式来匹配所有标题的内容(后面会介绍到正则表达式的使用) pattern = re.compile('<h2.*?>(.*?)</h2>', re.S) titles = re.findall(pattern, r.text) print(titles)
运行结果:
-
抓取二进制数据
# 在上面抓取网页时,实际上网页返回给我们的是一个HTML文档,若是想要抓取图片、音频、视频等文件,就要抓取对应的二进制的数据: # 在上面抓取网页时,实际上网页返回给我们的是一个HTML文档,若是想要抓取图片、音频、视频等文件,就要抓取对应的二进制的数据: import requests url = 'https://scape.center/favicon.ico' r = requests.get(url) print(r.text) print(r.content)
运行结果:
可以看到我们获得了服务器的响应,但是拿到的却是一堆乱码,它实际上是二进制数据
# 让我们来操作一波 import requests url = 'https://scape.center/favicon.ico' r = requests.get(url) # 把我们获取到的数据保存 with open('favicon.ico','wb') as f: f.write(r.content) # 运行之后可以看到当先工作路径下出现了一个新的文件
打开文件:
-
添加请求头
# 类似于之前 urllib 的添加方式 # 添加请求头 # 添加请求头 以伪装成浏览器发送请求 import requests url = 'https://ssr1.scrape.center/' headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.0.2242 SLBChan/11'} r = requests.get(url, headers=headers) print(r.text)
运行结果: 总之就是一大串源码
-
今日结束,未完待续…