requests模块

requests模块是python中原生的基于网络请求的模块,其主要作用是用来模拟浏览器发起请求。功能强大,用法简洁高效。在爬虫领域中占据着半壁江山的地位。

如何使用requests模块

  • 安装:

    • pip install requests
  • 使用流程
    • 指定url
    • 基于requests模块发起请求
    • 获取响应对象中的数据值
    • 持久化存储

基于requests模块的get请求

需求:爬取搜狗指定词条搜索后的页面数据

  1. import requests
  2. import os
  3. #指定搜索关键字
  4. word = input('enter a word you want to search:')
  5. #自定义请求头信息
  6. headers={
  7. 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',
  8. }
  9. #指定url
  10. url = 'https://www.sogou.com/web'
  11. #封装get请求参数
  12. prams = {
  13. 'query':word,
  14. 'ie':'utf-8'
  15. }
  16. #发起请求
  17. response = requests.get(url=url,params=param)
  18.  
  19. #获取响应数据
  20. page_text = response.text
  21.  
  22. with open('./sougou.html','w',encoding='utf-8') as fp:
  23. fp.write(page_text)

请求载体身份标识的伪装:

  • User-Agent:请求载体身份标识,通过浏览器发起的请求,请求载体为浏览器,则该请求的User-Agent为浏览器的身份标识,使用爬虫程序发起的请求,则该请求的载体为爬虫程序,则该请求的User-Agent为爬虫程序的身份标识。可以通过判断该值来获知该请求的载体究竟是基于哪款浏览器还是基于爬虫程序。

  • 反爬机制:某些门户网站会对访问该网站的请求中的User-Agent进行捕获和判断,如果该请求的UA为爬虫程序,则拒绝向该请求提供数据。

  • 反反爬策略:将爬虫程序的UA伪装成某一款浏览器的身份标识。

需求:登录豆瓣电影,爬取登录成功后的页面数据

  1. import requests
  2. import os
  3. url = 'https://accounts.douban.com/login'
  4. #封装请求参数
  5. data = {
  6. "source": "movie",
  7. "redir": "https://movie.douban.com/",
  8. "form_email": "",
  9. "form_password": "bobo@15027900535",
  10. "login": "登录",
  11. }
  12. #自定义请求头信息
  13. headers={
  14. 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',
  15. }
  16. response = requests.post(url=url,data=data)
  17. page_text = response.text
  18.  
  19. with open('./douban111.html','w',encoding='utf-8') as fp:
  20. fp.write(page_text)

需求:爬取豆瓣电影分类排行榜 https://movie.douban.com/中的电影详情数据

  1. #!/usr/bin/env python
  2. # -*- coding:utf-8 -*-
  3.  
  4. import requests
  5. import urllib.request
  6. if __name__ == "__main__":
  7.  
  8. #指定ajax-get请求的url(通过抓包进行获取)
  9. url = 'https://movie.douban.com/j/chart/top_list?'
  10.  
  11. #定制请求头信息,相关的头信息必须封装在字典结构中
  12. headers = {
  13. #定制请求头中的User-Agent参数,当然也可以定制请求头中其他的参数
  14. 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36',
  15. }
  16.  
  17. #定制get请求携带的参数(从抓包工具中获取)
  18. param = {
  19. 'type':'',
  20. 'interval_id':'100:90',
  21. 'action':'',
  22. 'start':'',
  23. 'limit':''
  24. }
  25. #发起get请求,获取响应对象
  26. response = requests.get(url=url,headers=headers,params=param)
  27.  
  28. #获取响应内容:响应内容为json串
  29. print(response.text)

需求:爬取肯德基餐厅查询http://www.kfc.com.cn/kfccda/index.aspx中指定地点的餐厅数据

  1. #!/usr/bin/env python
  2. # -*- coding:utf-8 -*-
  3.  
  4. import requests
  5. import urllib.request
  6. if __name__ == "__main__":
  7.  
  8. #指定ajax-post请求的url(通过抓包进行获取)
  9. url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword'
  10.  
  11. #定制请求头信息,相关的头信息必须封装在字典结构中
  12. headers = {
  13. #定制请求头中的User-Agent参数,当然也可以定制请求头中其他的参数
  14. 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36',
  15. }
  16.  
  17. #定制post请求携带的参数(从抓包工具中获取)
  18. data = {
  19. 'cname':'',
  20. 'pid':'',
  21. 'keyword':'北京',
  22. 'pageIndex': '',
  23. 'pageSize': ''
  24. }
  25. #发起post请求,获取响应对象
  26. response = requests.get(url=url,headers=headers,data=data)
  27.  
  28. #获取响应内容:响应内容为json串
  29. print(response.text)

需求:爬取国家药品监督管理总局中基于中华人民共和国化妆品生产许可证相关数据

  1. import requests
  2. from fake_useragent import UserAgent
  3.  
  4. ua = UserAgent(use_cache_server=False,verify_ssl=False).random
  5. headers = {
  6. 'User-Agent':ua
  7. }
  8.  
  9. url = 'http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsList'
  10. pageNum = 3
  11. for page in range(3,5):
  12. data = {
  13. 'on': 'true',
  14. 'page': str(page),
  15. 'pageSize': '',
  16. 'productName':'',
  17. 'conditionType': '',
  18. 'applyname':'',
  19. 'applysn':''
  20. }
  21. json_text = requests.post(url=url,data=data,headers=headers).json()
  22. all_id_list = []
  23. for dict in json_text['list']:
  24. id = dict['ID']#用于二级页面数据获取
  25. #下列详情信息可以在二级页面中获取
  26. # name = dict['EPS_NAME']
  27. # product = dict['PRODUCT_SN']
  28. # man_name = dict['QF_MANAGER_NAME']
  29. # d1 = dict['XC_DATE']
  30. # d2 = dict['XK_DATE']
  31. all_id_list.append(id)
  32. #该url是一个ajax的post请求
  33. post_url = 'http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsById'
  34. for id in all_id_list:
  35. post_data = {
  36. 'id':id
  37. }
  38. response = requests.post(url=post_url,data=post_data,headers=headers)
  39. #该请求响应回来的数据有两个,一个是基于text,一个是基于json的,所以可以根据content-type,来获取指定的响应数据
  40. if response.headers['Content-Type'] == 'application/json;charset=UTF-8':
  41. #print(response.json())
  42. #进行json解析
  43. json_text = response.json()
  44. print(json_text['businessPerson'])

Python网络爬虫-requests模块的更多相关文章

  1. python 网络爬虫requests模块

    一.requests模块 requests模块是python中原生的基于网络请求的模块,其主要作用是用来模拟浏览器发起请求.功能强大,用法简洁高效. 1.1 模块介绍及请求过程 requests模块模 ...

  2. Python网络爬虫-requests模块(II)

    有些时候,我们在使用爬虫程序去爬取一些用户相关信息的数据(爬取张三“人人网”个人主页数据)时,如果使用之前requests模块常规操作时,往往达不到我们想要的目的,例如: #!/usr/bin/env ...

  3. python网络编程----requests模块

    python访问网站可以用标准模块--urllib模块(这里省略),和requests(安装-pip install requests)模块,requests模块是在urllib的基础上进行的封装,比 ...

  4. 06 Python网络爬虫requets模块高级用法

    一. 基于requests模块的cookie操作 - cookie概念: 当用户通过浏览器访问一个域名的时候,访问的web服务器会给客户端发送数据,以保持web服务器与客户端之间的状态保持,这些数据就 ...

  5. Python网络爬虫-xpath模块

    一.正解解析 单字符: . : 除换行以外所有字符 [] :[aoe] [a-w] 匹配集合中任意一个字符 \d :数字 [0-9] \D : 非数字 \w :数字.字母.下划线.中文 \W : 非\ ...

  6. Python网络爬虫:空姐网、糗百、xxx结果图与源码

    如前面所述,我们上手写了空姐网爬虫,糗百爬虫,先放一下传送门: Python网络爬虫requests.bs4爬取空姐网图片Python爬虫框架Scrapy之爬取糗事百科大量段子数据Python爬虫框架 ...

  7. 【python网络爬虫】之requests相关模块

    python网络爬虫的学习第一步 [python网络爬虫]之0 爬虫与反扒 [python网络爬虫]之一 简单介绍 [python网络爬虫]之二 python uillib库 [python网络爬虫] ...

  8. python 网络爬虫全流程教学,从入门到实战(requests+bs4+存储文件)

    python 网络爬虫全流程教学,从入门到实战(requests+bs4+存储文件) requests是一个Python第三方库,用于向URL地址发起请求 bs4 全名 BeautifulSoup4, ...

  9. 《实战Python网络爬虫》- 感想

    端午节假期过了,之前一直在做出行准备,后面旅游完又休息了一下,最近才恢复状态. 端午假期最后一天收到一个快递,回去打开,发现是微信抽奖中的一本书,黄永祥的<实战Python网络爬虫>. 去 ...

随机推荐

  1. bzoj1613

    题解: 简单dp 然而我还是错了7次 代码: #include<bits/stdc++.h> using namespace std; ,M=; int n,m,a[N],dp[N][M] ...

  2. weblogic控制台定制不同权限的用户

    安装weblogic并创建域(domain)的时候,会默认创建一个用户,此用户为管理员,也就是权限最大的.只有这样一个用户,用起来很不安全,因为一个测试环境,好多人在用,经常会有人修改上面的数据源等关 ...

  3. [转载]oracle建表语句大全

    原文URL:http://blog.csdn.net/haiross/article/details/11772847 Oracle创建表语句(Create table)语法详解及示例   创建表(C ...

  4. docker(二)不管怎么样,先跑起来。运行一个samba,运行一个hello world。

    ---恢复内容开始--- 继续上一篇文章 访问https://hub.docker.com/r/jackadam/samba/ 这是我写的一个docker镜像. 下面有 无脑测试用: docker r ...

  5. tf.nn的conv2d卷积与max_pool池化

    tf.nn.conv2d(value,filter,strides,[...]) 对于图片来说 value :   形状通常是np.array()类型的4维数组也称tensor(张量),  (batc ...

  6. Triangles 正多边形分割锐角三角形

    题目描述 已知一个圆的圆周被N个点分成了N段等长圆弧,求任意取三个点,组成锐角三角形的个数. 输入 多组数据,每组数据一个N(N <= 1000000) 输出 对于每组数据,输出不同锐角三角形的 ...

  7. koa 核心源码介绍

    链接来源 Request,Context,Response  在代码运行之前就已经存在的 Request和Response自身的方法会委托到Context中. Context源码片段 var dele ...

  8. magento导航栏中如何加入home主页

    magento在导航栏中加入home主页是很简单的,几个步骤即可在magento导航栏中加入home主页! 下面简单介绍下如何在magento导航栏中加入home主页: 首先我们打开对应应用的模板文件 ...

  9. tiny4412 UART for C printf Demo

    /************************************************************************** * tiny4412 UART for C pr ...

  10. SVM实现分类识别及参数调优(一)

    前言 项目有一个模块需要将不同类别的图片进行分类,共有三个类别,使用SVM实现分类. 实现步骤: 1.创建训练样本库: 2.训练.测试SVM模型: 3.SVM的数据要求: 实现系统: windows_ ...