requests模块基础

requests模块:python中原生的一款基于网络请求的模块,作用是模拟浏览器发送请求。

如何使用:
  指定url - 发起请求 - 获取响应数据 - 持久化存储

实战需求:爬取搜狗首页的页面数据
import requests

if __name__ == "__main__":
    # 指定url
    url = 'https://www.sogou.com/'

    # 发起请求,浏览器只会发起get请求,而requests即可发起get又能发起post,get请求会返回一个响应对象
    response = requests.get(url = url)

    # 获取响应数据,.text返回的是字符串形式的响应数据
    page_text = response.text
    print(page_text)

    # 持久化存储
    with open('./sogou.html','w',encoding='utf-8') as fp:
        fp.write(page_text)
    print('爬取数据结束!!!')

  对于with open() as fp:的补充:

  • 常见的读写操作
with open(r'filename.txt') as f:
   data_user=pd.read_csv(f)  #文件的读操作
 
with open('data.txt', 'w') as f:
   f.write('hello world')  #文件的写操作
  • 相关参数
r:  以只读方式打开文件。
 
rb: 以二进制格式打开一个文件用于只读。
 
r+: 打开一个文件用于读写。
 
rb+:以二进制格式打开一个文件用于读写。
 
w:  打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
 
wb: 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
 
w+: 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
 
wb+:以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
 
a:  打开一个文件用于追加。如果该文件已存在,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
 
ab: 以二进制格式打开一个文件用于追加。如果该文件已存在,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
 
a+: 打开一个文件用于读写。如果该文件已存在,文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
 
ab+:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
  • 与open()的区别 
fp = open("./a.txt", "w+")
fp.write("This is a txt file.")
fp.close()

  以上是标准的文件操作写流程,分别由"打开文件"--"写入文件内容"--"关闭文件"这三个步骤完成。

  从系统资源分配层面来讲,系统在执行这个程序时,首先,在执行第一句时,系统需要为这个文件操作腾出一个空地(运行内存),一直供这个文件操作使用,直至执行"fp.close()"语句时,相应的内存空间才会被释放。那么,如果程序员忘记写close这条语句,就意味着没有关闭这个文件,此时就造成了系统资源的长期占用(造成了浪费)。

  而对于with open() as fp:

with open("./a.txt", "w+") as fp:
    fp.write("This is a txt file.")

print(fp.closed())

  只需要前两步,即"打开文件"--"写入内容","关闭文件"这一步没有了。原因是,with...as...是根据代码块(隶属)关系进行工作的,当程序执行在代码块内时,文件会一直保持打开状态,一旦当程序离开这个代码块(即不隶属这个区间)时,程序就会自动的关闭这个文件,实现更好的文件管理,最优的使用系统资源。

  通过最后的文件状态查看语句"fp.closed()"可以看到文件退出该区块时,已经自动关闭了该文件。

 

 
posted @ 2022-01-15 09:59  Sunshine_y  阅读(32)  评论(0编辑  收藏  举报