返回顶部
首页 > 资讯 > 后端开发 > Python >利用python获取想要搜索的数据
  • 259
分享到

利用python获取想要搜索的数据

利用python获取想要的数据python获取搜索数据python数据 2023-05-19 08:05:17 259人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录前言本次爬虫思路urllib库1.urllib库的介绍2.urllib库的使用模板3.使用urllib库获取数据4.urllib库一些个人总结requests库5.request

前言

大家在日常生活中经常需要查找不同的事物的相关信息,今天我们利用python来实现这一个小功能,同时呢,也是大家对基础知识的一个综合实践,相信有不少小伙伴已经准备跃跃欲试了,话不多说,开干!

本次爬虫思路

  • 获取url
  • 通过请求拿到响应
  • 处理反爬
  • 修改传递参数
  • 完善程序

urllib库

1.urllib库的介绍

urllib库是Python的标准库,提供了一系列用于操作URL的功能,其大部分功能与requests库类似,也有一些特别的用法。
urllib库是Python标准库提供的一个用户操作URL的模块,python3把原来Python 2的urilib库和Urllib 2库合并成了一个Urllib库,现在讲解的就是Python3中的Urllib库。

urllib.request——打开和读取URL;

urllib.error——包含Urllib.request各种错误的模块;

urlib.parse——解析URL;

urllib.robotparse——解析网站robots.txt文件。

2.urllib库的使用模板

import urllib.request     
url ='xxxxxxxxxxxx'   
#发送请求                
 request= urllib.request.Request(url,data,header)      
 #得到响应
 response=urllib.request.urlopen(request)
 #解码
 content = response.read().decode() 
 #查看数据
 print(content)    

3.使用urllib库获取数据

1. 获取URL:首先使用Chrome浏览器打开某度网页,随便输入一个:xxx,然后打开开发工具(右键检查),切换到网络界面,清空记录,重新刷新页面,可以看到:

如此这个URL就是我们需要获取的URL:https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E6%B3%95%E8%A7%A3%E5%86%B3%E6%96%B9%E6%B3%95&fenlei=256&rsv_pq=0x8dc81b9f001c02d3&rsv_t=1c35crTFwJXLFoeU8nF33RDMyj9nX%2FofGDNqUmHapdGRlUDmKmo7610WDRno****&rqlang=en&rsv_dl=tb&rsv_sug3=7&rsv_enter=0&rsv_btype=i&inputT=2267&rsv_sug4=2878
分析:加粗的这一堆:就是法解决方法这几个关键字;

2.通过请求拿到响应:直接利用模板模拟浏览器发起请求:

突然发现我们没有拿到想要的数据。难道是我们程序写错了吗?

3. 处理反爬:莫急,俗话说人靠衣服马靠鞍,服务器就像大美女,你要打扮的帅帅的,才能获得美女的芳心,当然,这种方法是对于我们人来说的,你可别马上就给电脑喷香水啊,针对程序来说,我们就需要伪装,假装我是一个浏览器,那么,如何伪装呢?我们就需要携带一些参数,先试试这个:
user-agent: Mozilla/5.0 (windows NT 10.0; Win64; x64) AppleWEBKit/537.36 (Khtml, like Gecko) Chrome/111.0.0.0 Safari/537.36(主要是我们电脑浏览器的名称,版本信息),再试一次:

成功“骗”过了服务器,这样就拿到了数据(高兴🥰),别着急,我们再思考一下,能不能通过修改一些参数,就让我们想找哪些数据就拿哪些数据,好,接下来我们就分析它的参数:

  • 修改传递参数

wd:xx,它是这样传递我们输入的文字的,那么我们创造一个字典类型的键值对,发送请求时,再将这个参数拼接上去,这样不就实现了我们的需求嘛(特别注意编解码的问题)

哈哈,这里百度第二个安全验证出来了,根本原因是我们携带的一些参数有问题,因为还有一些参数在变,但是对于我们入门的童鞋处理起来不太友好,所以常用三种方法:
1.将wd后面的参数直接去掉;(成功率不高)
2.去掉HttpS后面的是s,使用http协议;(成功率不高)
3.使用cookie;(比较稳定)

我选择使用第三种:

这样就利用urllib库实现了这个小功能。别着急,更简单的方法还在后面呢!😎😋

4.urllib库一些个人总结

1. urllib库在处理一些网址的时候比requests库更加快捷;
2. urllib库涉及编解码的问题,必须手动添加;
3. 使用起来代码行数多,比较笨重。
是不是感觉全是缺点,正因如此,我们的requests库应运而生,简单快捷方便,是对它最清晰的写照,更加的人性化,接下来正式介绍这一大杀器,同时也希望大家尽量使用 requests库来写爬虫(真的很好很好很好用!🤩)。

requests库

5.requests库的介绍

requests库常用有这些功能:
1、Keep-Alive & 连接池
2、国际化域名和 URL
3、带持久 Cookie 的会话
4、自动内容解码
5、优雅的 key/value Cookie
6、Unicode 响应体
7、HTTP(S) 代理支持

6.requests库的使用模板

import requests   
url ='xxxxxxxxxxxx' 
#发送请求                              
response = request.get(url, params,headers)  (get请求或者post请求)  
#根据响应的格式解码,非常智能
response.encoding=response.appareent_encoding

7.使用requests库获取数据

布置爬虫的步骤在urllib库使用的时候已经非常详细的解释了,在此不在赘述,步骤相同,大家可以尝试用模板自己写一下(我个人的代码放在最后了)。如果有哪里不懂得,可以在评论区留言,博主会尽全力解答。

8.requests库一些个人总结

1. requests库步骤简单;
2. 各种操作方法人性化,功能更加强大;
3. requests 库拥有完全自动化 Keep-alive 和 HTTP 连接池的功能,主要是突出Python的优雅二字。

9.个人建议(附代码)

1.部署爬虫时要先思考好大步骤,最好能把步骤写下来,然后一步一步逐步去写代码;
2.再仔细去浏览网页,确然好你爬的信息接口是哪个,是什么类型的请求,参数是什么,是存在网页本身还是二次加载进来的等等,一定要细心认真;
3.处理反爬时一般携带的参数就是:User-Agent,Cookie,Accept,Host,这几个,如果还是拿不到数据,那就是进阶了,暂时先不用管;
4.多观察几次请求,找到规律,实现规模式爬取(这也是爬虫的初心)
5.优化自己的程序,提高效率的同时又要避免被检测出来,多思考就会有灵感。
request库代码:

import requests

data = input('输入你想要查找的数据:').split()

url ='http://www.baidu.com/s'

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36',
    'Cookie': 'BIDUPSID=CDE3B4BEE7AE0D336C4D0734E42BCF8B; PSTM=1664331801; BAIDUID=CDE3B4BEE7AE0D33996D27FED1DDB4DB:FG=1; BD_UPN=12314753; BDUSS=JNdXVzTXMyWmFKM0x1VWJ5eG9GUjg4UmvcRFQxY1dtejBPVDFBfjc0VHhYRnRqRVFBQUFBJCQAAAAAAAAAAAEAAACse3WjanNuZGJpZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPHPM2PxzzNjTT; BDUSS_BFESS=JNdXVzTXMyWmFKM0x1VWJ5eG9GUjg4UmVCRFQxY1dtejBPVDFBfjc0VHhYRnRqRVFBQUFBJCQAAAAAAAAAAAEAAACse3WjanNuZGJpZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAphpM2PxzzNjTT; newlogin=1; ZFY=utLrULRdQjGdhXHuTriamg7jZ2PZMLmnKmUCBUiVrTw:C; BAIDUID_BFESS=CDE3B4BEE7AE0D33996D27FED1DDB4DB:FG=1; BA_HECTOR=ag04ah242k2l2h0la0010ofe1ho8t901f; BDORZ=FFFB88E999055A3F8A630C64834BD6D0; COOKIE_SESSioN=765400_1_9_9_5_15_1_0_9_7_0_0_1292084_0_0_0_1668919087_1669684425_1669684425%7C9%234656831_6_1669684425%7C3; B64_BOT=1; BDRCVFR[7FEYkXni5q3]=mk3SLVN4HKm; BD_HOME=1; H_PS_PSSID=26350; BD_CK_SAM=1; PSINO=3; delPer=1; H_PS_645EC=3D48biiwjEvDlNFtMaUHuepsRu67OxRgPoEiORMKvfRketUwB4GowDbv4KmDa%2BaTHUGCCoc; baikeVisitId=e1f583c7-eb15-4940-a709-054666f30f48; BDSVRTM=443'
}

data = {
    'wd': data
}
response = requests.get(url=url, params=data, headers=headers)

response.encoding = response.apparent_encoding

print(response.text)

以上就是利用python获取想要搜索的数据的详细内容,更多关于python获取数据的资料请关注编程网其它相关文章!

--结束END--

本文标题: 利用python获取想要搜索的数据

本文链接: https://lsjlt.com/news/212787.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 利用python获取想要搜索的数据
    目录前言本次爬虫思路urllib库1.urllib库的介绍2.urllib库的使用模板3.使用urllib库获取数据4.urllib库一些个人总结requests库5.request...
    99+
    2023-05-19
    利用python获取想要的数据 python获取搜索数据 python数据
  • 利用Python通过获取剪切板数据实现百度划词搜索功能
    目录一、实现划词功能二、运行错误三、解决问题一、实现划词功能 说是划词翻译,实际上我们是通过获取用户的剪切板内容,通过一系列的操作得到的。首先呢,我们就先实现如何获取剪切板内容的程序...
    99+
    2024-04-02
  • Java中documentHelper解析xml获取想要的数据
    目录获取单节点数据获取数组节点数据webservice接口的入参和出参都是xml格式的数据,网上有很多方法,下面我将使用documentHelper工具来解析xml格式的数据,获取到...
    99+
    2023-02-01
    documentHelper解析xml Java XML解析
  • 想要更快的搜索体验?学习 Go 实时索引函数!
    在互联网时代,搜索引擎已经成为人们获取信息的重要途径。然而,随着互联网的快速发展,搜索引擎的速度和效率成为人们关注的焦点。因此,如何提高搜索引擎的速度和效率,成为了搜索引擎开发人员的一个重要问题。而 Go 实时索引函数的出现,为解决这个问...
    99+
    2023-07-31
    索引 实时 函数
  • Vue利用vue-baidu-map实现获取经纬度和搜索地址
    目录1.申请百度地图密钥2.安装vue-baidu-map3.获取经纬度最终实现效果在开发项目的时候,发现需要获取经纬度,由于这个项目是用vue写的,最后决定使用vue-baidu-...
    99+
    2024-04-02
  • 利用Python实时获取steam特惠游戏数据
    目录前言代码部分开发环境先导入本次所需的模块请求数据获取请求的数据解析数据保存数据前言 Steam是由美国电子游戏商Valve于2003年9月12日推出的数字发行平台,被认为是计算机...
    99+
    2024-04-02
  • 如何使用Python通过获取剪切板数据实现百度划词搜索功能
    小编给大家分享一下如何使用Python通过获取剪切板数据实现百度划词搜索功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、实现划词功能说是划词翻译,实际上我们...
    99+
    2023-06-15
  • C#中怎么利用WMI获取数据
    本篇文章给大家分享的是有关C#中怎么利用WMI获取数据,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 首先启动Visual Studio .Net,依次选择"文件&q...
    99+
    2023-06-17
  • 怎么用Python标准库修改搜索引擎获取结果
    这篇文章主要讲解了“怎么用Python标准库修改搜索引擎获取结果”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Python标准库修改搜索引擎获取结果”吧!我输入的关键字作为地址参数传递...
    99+
    2023-06-17
  • python怎么过滤出想要的数据
    在Python中,可以使用多种方法来过滤出想要的数据。下面是一些常用的方法:1. 使用列表推导式:列表推导式是一种简洁的方式来生成列...
    99+
    2023-09-29
    python
  • 使用 python 获取 Openshift ConfigMap 数据
    问题内容 我正在尝试使用 openshift python 库获取项目中 configmap 的数据。我设法获取了 configmap 的名称,但我可以在文档中找到用于提取数据的函数或...
    99+
    2024-02-22
  • MyBatisPlus利用Service实现获取数据列表
    目录1. 简单介绍2. 接口说明3. 参数说明4. 实例代码4.1 不带任何参数的 list() 方法查询数据4.2 查询用户ID大于 10,小于 20 且性别为“男&r...
    99+
    2024-04-02
  • python-获取URL中的json数据
    数据源为某系统提供的URL,打开是json文件,python代码获取如下: URL替换成自己的即可。 import urllib.request def get_record(url): resp = urllib.r...
    99+
    2023-01-31
    数据 python URL
  • 使用python怎么爬取微博的热搜数据
    使用python怎么爬取微博的热搜数据?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。主要用到requests和bf4两个库将获得的信息保存在d://hotsea...
    99+
    2023-06-06
  • python获取网络数据的方法
    本篇内容主要讲解“python获取网络数据的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python获取网络数据的方法”吧!Retrieving Data over HTTPPython ...
    99+
    2023-06-14
  • 如何利用AJAX获取Django后端数据详解
    使用Django服务网页时,只要用户执行导致页面更改的操作,即使该更改仅影响页面的一小部分,它都会将完整的HTML模板传递给浏览器。但是如果我们只想更新页面的一部分,则不必完全重新渲...
    99+
    2024-04-02
  • MyBatisPlus如何利用Service实现获取数据列表
    这篇文章主要介绍“MyBatisPlus如何利用Service实现获取数据列表”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MyBatisPlus如何利用Service实现获取数据列表”文章能帮助大...
    99+
    2023-07-02
  • Python脚本开发漏洞的批量搜索与利用(GlassFish 任意文件读取)
    目录Python 开发学习的意义:(1)学习相关安全工具原理.(2)掌握自定义工具及拓展开发解决实战中无工具或手工麻烦批量化等情况.(3)在二次开发 Bypass,日常任务,批量测试...
    99+
    2024-04-02
  • 利用Pandas索引和选取数据方法详解
    目录1. 导入数据集2. 列选择3. 行选择数字Index字符串Index4. 行+列选择,找到元素获取北汽2019年11月的销量获取前5个品牌从2019年10月到12月的销量5. ...
    99+
    2024-04-02
  • python怎么调用接口获取数据
    要调用接口获取数据,可以使用Python中的requests库。下面是一个简单的示例:```pythonimport request...
    99+
    2023-08-30
    python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作