使用requests模块简单获取数据

一、使用ruquests的基本步骤:

  • 指定url
  • 发起请求
  • 获取响应对象中的数据
  • 持久化存储
1 #1
2 url = 'https://www.sogou.com/'
3 #2.
4 response = requests.get(url=url)
5 #3.
6 page_text = response.text
7 #4.
8 with open('./sogou.html','w',encoding='utf-8') as fp:
9     fp.write(page_text)

二、爬取搜狗指定搜索

 1 import requests
 2 url = "'https://www.sogou.com/web"
 3 wd = input("请输入搜索关键字")
 4 param = {
 5     'query':wd
 6 }
 7 
 8 response = requests.get(url=url,params=param).content
 9 filename = wd+'.html'
10 with open(filename,'w',encoding='utf8') as f1:
11         f1.write(response)

三、Ajax请求

通过抓包,获取请求携带的参数,

例如获取分页显示的数据,当点击下一页时,发送ajax请求,对此时的url请求可以动,这里我们定义好请求参数param,动态的指定页码和每页显示的数据,通过ajax请求,返回一组json数据

存储每页获取的数据的id,编辑new_url,获取详情的信息

 1 import requests
 2 url = 'http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsList'
 3 headers = {
 4     'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0'
 5 }
 6 param = {
 7    "on":"true",
 8     "page":1,
 9     "pageSize":"15",
10     "productName":"",
11     "conditionType":"1",
12     "applyname":"",
13     "applysn":"",
14 }
15 id_list = []
16 json_object = requests.post(url=url,headers=headers,params=param).json()
17 print(json_object['list'])
18 for i in json_object['list']:
19     id_list.append(i['ID'])
20     
21 new_url = 'http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsById'
22 filename = 'yaojians.text'
23 f = open(filename,'w',encoding='utf8')
24 for id in id_list:
25     param = {
26         'id':id
27     }
28     content_json = requests.post(url=new_url,params=param,headers=headers).json()
29     f.write(str(content_json)+'\n')
30     
31     
32     

四、使用BeautifullSoup爬取数据

bs4解析:
  pip install bs4
  pip install lxml

解析原理
  1、将要进行解析的源码加载到bs对象

  2、调用bs对象中相关的方法或属性进行源码中的相关标签的定位

  3、将定位到的标签之间存在的文本或属性值获取

 1 import requests
 2 from bs4 import BeautifulSoup
 3 
 4 url = 'http://www.shicimingju.com/book/sanguoyanyi.html'
 5 headers = {
 6     "User-Agent":'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36'
 7 }
 8 res = requests.get(url=url, headers=headers).text
 9 soup = BeautifulSoup(res, 'lxml')
10 a_tags_list = soup.select('.book-mulu > ul > li > a')
11 filename = 'snaguo.text'
12 fp = open(filename, 'w', encoding='utf-8')
13 for a_tag in a_list:
14     title = a_tag.string
15     detail_url = "http://www.shicimingju.com"+a_tag["href"] 
16     detail_content = requests.get(url=detail_url, headers=headers).text
17     soup = BeautifulSoup(detail_content, "lxml")
18     detail_text = soup.find('div', class_="chapter_content").text
19     fp.write(title+'\n'+detail_text)
20     print(title, '下载完毕')
21 print('over')
22 fp.close()
23     

 

五、简单使正则爬取图片

 1 url = 'https://www.qiushibaike.com/pic/page/%d/?s=5170552'
 2 start_page = int(input("请输入起始页:"))
 3 end_page = int(input("请输入结束页:"))
 4 headers = {
 5     "User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0"
 6 }
 7 for page in range(start_page,end_page+1):
 8     new_url = format(url%page)
 9     response = requests.get(url=new_url, headers=headers).text
10     # 每一页的图片url
11     images_url = re.findall('<div class="thumb">.*?<img src="(.*?)" alt=.*?</div>',response,re.S)
12 os.mkdir('qiutu')
13     
14     for image_url in images_url:
15         detail_url = 'http:'+image_url
16         # 获取到当前图片的二进制流
17         content = requests.get(url=detail_url,headers=headers).content
18         # 切割 把图片路径最后的字符作为图片名
19         image_name = image_url.split('/')[-1]
20         with open('./qiutu/'+image_name,'wb')as f1:
21             f1.write(content)
22 print('over')



转载于:https://www.cnblogs.com/liaopeng123/p/10440242.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/425565.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代数运算

代数运算 概念 代数运算是指两幅或多幅输入图像之间进行点对点的加、 减、乘、除运算得到输出图像的过程。如果记输入图像 为A(x,y)和B(x,y)&#xff0c;输出图像为C(x,y)&#xff0c;则有如下四种形 式&#xff1a; 逻辑运算 在进行图像理解与分析领域比较有用。运用这种方法…

[剑指offer][JAVA]面试题第[21]题[调整数组顺序使奇数位于偶数面前][双指针]

【问题描述】[简单] 输入一个整数数组&#xff0c;实现一个函数来调整该数组中数字的顺序&#xff0c;使得所有奇数位于数组的前半部分&#xff0c;所有偶数位于数组的后半部分。示例&#xff1a;输入&#xff1a;nums [1,2,3,4] 输出&#xff1a;[1,3,2,4] 注&#xff1a;[…

后缀数组 魔板

为什么一开始要再字符串末尾多算个0呢 因为当开始分关键字比较的时候 最后要组成两个 字符所以要多个0 什么你有问我为什么填0 因为0小啊 先处理呗 虽然 sa是根据每个字符确定的大小 也就是排布的每个字符的排名 但是在初次求第二关键字排序的时候 可以使用sa的结论 首…

几何运算

几何运算 .概念 几何运算就是改变图像中物体对象&#xff08;像素&#xff09;之间的空 间关系。 从变换性质来分&#xff0c;几何变换可以分为图像的位置变换 &#xff08;平移、镜像、旋转&#xff09;、形状变换&#xff08;放大、缩小&#xff09;以 及图像的复等合变换…

vmware创建虚拟机并安装centos7系统

一、vmware创建虚拟机 1、添加一个全新的虚拟机 2、以典型的方式创建虚拟机&#xff0c;然后下一步 3、选择稍后安装操作系统&#xff08;这样我们等下可以自由选择操作系统&#xff09;&#xff0c;然后下一步 4、选择客户及操作系统类型及版本&#xff08;由于我这里将安装的…

MySQL学习笔记3——JDBC

目录JDBC简介数据库驱动JDBC第一个JDBC程序JDBC中各对象详解statement对象包装成工具类SQL注入问题PreparedStatement对象使用IDEA连接数据库JDBC操作事务数据库连接池DBCP需要用到的JAR包DBCP配置文件工具类测试代码C3P0需要用到的JAR包C3P0配置文件工具类测试代码结论JDBC简介…

[Leedcode][JAVA][第15题][三数之和][数组][双指针]

【问题描述】[中等] 给你一个包含 n 个整数的数组 nums&#xff0c;判断 nums 中是否存在三个元素 a&#xff0c;b&#xff0c;c &#xff0c;使得 a b c 0 &#xff1f;请你找出所有满足条件且不重复的三元组。注意&#xff1a;答案中不可以包含重复的三元组。 示例&#…

HDU 5882 Balanced Game 分析+欧拉图

题意 就是把判断有五个姿态的剪子包袱锤游戏其中能否平局分析 。。。。code ## /*本题的正确逻辑是分析出图中要求的是个欧拉图因为每个点的入度等于出度每个点的攻防数目都一样所以可以把当前有向欧拉图 转化为无向欧拉图当且仅当 其中没有奇数定点的时候所以这道题 ~ */#i…

Yarn的三种资源调度机制

在企业中并不是只有一个人来执行MapReduce程序单独使用Yarn的资源&#xff0c;实际开发中&#xff0c;会有很多人一起使用Yarn这个资源&#xff0c;如果每个人都提交了job&#xff0c;这个时候Yarn就需要进行调度去分配资源给job&#xff0c; 下面三种调度机制&#xff0c;默认…

Java学习笔记9-1——JavaWeb

目录HTTPHTTP请求HTTP响应ServletServlet原理Mapping问题ServletContext获取ServletContext对象ServletContext应用HttpServletResponse下载文件验证码功能实现重定向HttpServletRequestCookie和Session会话CookieSession&#xff08;重点&#xff09;对比ServletContextJSPJSP…

HDU - 5878 A - I Count Two Three H 技巧枚举

题意 输入 t (1≤t≤500000), the number of test cases. t test cases follow. Each test case provides one integer n (1≤n≤109).让我们不小于n的最小的x满足 x2^a*3^b*5^c*7^d 分析 这道题其实就是个枚举 但是不能随便枚举 比如 如果向这样枚举的话scanf("%lld&q…

[剑指offer][JAVA]面试题第[22]题[j剑指offer][双指针][快慢指针]

【问题描述】[中等] 输入一个链表&#xff0c;输出该链表中倒数第k个节点。为了符合大多数人的习惯&#xff0c;本题从1开始计数&#xff0c;即链表的尾节点是倒数第1个节点。例如&#xff0c;一个链表有6个节点&#xff0c;从头节点开始&#xff0c;它们的值依次是1、2、3、4…

灰度重采样(Gray Resampling

插值方法 nearest——最邻近点插值。它根据已知两点间的插值 点和这两已知点间位置的远近来进行插值&#xff0c;取较近已知 插值点处的函数值作为未知插值点处的函数值。 linear——线性插值。它将相邻的数据点用直线相连&#xff0c; 按所生成的直线进行插值。 spline——…

java调用python脚本

java调用python脚本 常见的java调用python脚本方式 通过jython.jar提供的类库实现 &#xff08;不建议使用&#xff0c;因为会报module没有找到的错误&#xff0c;总之就是很蛋疼&#xff0c;要设置一系列的参数&#xff09;通过Runtime.getRuntime()开启进程来执行脚本文件&am…

空间变换方法

空间变换方法可分为简单变换和控制点变换两种方法&#xff0c; 主要介绍了简单变换 法&#xff0c;这里再补充控制点变换方法。 在许多图像处理的应用中&#xff0c;所需的空间变换都很复杂&#xff0c;不是只通过简单的平移、旋转和 缩放等能解决的&#xff0c;而要通过各种不…

[剑指offer][JAVA]面试题第[24]题[反转链表][递归][双指针][头插法]

【问题描述】[中等] 定义一个函数&#xff0c;输入一个链表的头节点&#xff0c;反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL限制&#xff1a;0 < 节点个数 < 5000【解答思路】 1. …

AC自动机模板

const int maxn 1000005;//定义所需要最大长度 struct Aho{struct state{int next[26];//trie树结构int fail,cnt;//失配指针和表示当前点作为结束点的标记}st[maxn];int size;//定义当前一共有多少个点queue<int>q;//层序遍历序列void init(){for(int i0;i<maxn;i){…

【解决问题】useBean类属性[com.cheng.pojo.People]的值无效导致HTTP500问题

先上实体类代码的前半部分&#xff1a; 这是出现问题时的&#xff1a; package com.cheng.pojo;public class People {private int id;private String name;private int age;private String address;public People(int id, String name, int age, String address) {this.id i…

python学习day32 黏包 struct模块

为什么会出现黏包问题&#xff1f; 首先只有在TCP协议中才会出现黏包现象 是因为TCP协议是面向流的协议 在发送的数据 传输过程中 有缓存机制 来避免数据丢失 因此 在连续发送小数据的时候 以及接收大小不符的时候都容易出现黏包现象 本质还是因为我们在接受数据的时候不知道发…