中文文档 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()
02-01 12:07