中文文档 API: http://requests.kennethreitz.org/zh_CN/latest/
安装
pip install requests
获取网页
# coding=utf-8 import requests response = requests.get('http://www.baidu.com') # 第一种方式 获取响应内容 # 查看网页编码方式 print(response.encoding) # 修改编码方式 response.encoding = 'utf-8' # 获取响应内容 print(response.text) # 第二种方式 获取二进制响应内容 # 获取二进制响应内容 print(response.content) # 解码 decode('解码方式') 默认时utf-8的方式 print(response.content.decode())# coding=utf-8 import requests response = requests.get('http://www.baidu.com') # 第一种方式 获取响应内容 # 查看网页编码方式 print(response.encoding) # 修改编码方式 response.encoding = 'utf-8' # 获取响应内容 print(response.text) # 第二种方式 获取二进制响应内容 # 获取二进制响应内容 print(response.content) # 解码 decode('解码方式') 默认时utf-8的方式 print(response.content.decode())
保存图片
import requests response = requests.get('http://requests.kennethreitz.org/zh_CN/latest/_static/requests-sidebar.png') # 保存图片 with open('a.png','wb') as f: f.write(response.content)
获取状态码以及判断请求是否成功
import requests r = requests.get('http://www.baidu.com') # 获取状态码 print(r.status_code) # 获取到200不一定成功 可能获取的时跳转之后的页码 # 断言 判断请求是否成功 assert r.status_code==200 # 如果成功 没有任何反应 失败会报错 # 获取响应header print(r.headers) # 获取请求header print(r.request.headers) # 获取请求url print(r.request.url) # 获取响应的url print(r.url)
带header头伪装浏览器爬取内容
import requests # 模拟header头 headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36'} # 获取网页 r = requests.get('http://www.baidu.com',headers=headers) # 获取响应内容 print(r.text)
爬取贴吧内容
import requests class WebSpider(): def __init__(self, name): self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36'} self.url_temp = "http://tieba.baidu.com/f?kw="+ name +"&ie=utf-8&pn={}" self.name = name # 构建地址列表 def get_url_list(self): return [self.url_temp.format(i*50) for i in range(1000)] # 获取贴吧内容 def parse_url(self, url): #爬取数据 print(url) r = requests.get(url, headers=self.headers) return r.content.decode() def run(self): # 获取地址列表 urls = self.get_url_list() # 遍历 爬取数据 for url in urls: html_str = self.parse_url(url) # 保存 page_num = urls.index(url)+1 # 获取也码数 file_name = self.name + "第{}页.html".format(page_num) with open(file_name, "w", encoding="utf-8") as f: f.write(html_str) if __name__ == '__main__': r = WebSpider(input("请输入贴吧名字:")) r.run()