Python爬虫 | 利用python爬虫获取想要搜索的数据(某du)

这篇具有很好参考价值的文章主要介绍了Python爬虫 | 利用python爬虫获取想要搜索的数据(某du)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这篇文章主要介绍了利用Python爬虫采集想要搜索的信息(利用某du的接口实现)并且处理掉它的反爬手段,文中示例代码很详细,具有一定的学习价值,感兴趣的小伙伴快来一起学习吧。

☀️新人小白博主
🌖希望大家多多关注和指导
🌗和大家共同成长,一起努力,希望大家都可以遇到更好的自己👊
🌟个人主页,你的关注和点赞是我不断更新的动力,谢谢大家~😘

前言

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

本次爬虫思路

  1. 获取url
  2. 通过请求拿到响应
  3. 处理反爬
  4. 修改传递参数
  5. 完善程序

urllib库

1.urllib库的介绍

1.urllib库的介绍

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

urllib库含有4个模块,主要作用如下:

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,然后打开开发者工具(右键检查),切换到网络界面,清空记录,重新刷新页面,可以看到:
Python爬虫 | 利用python爬虫获取想要搜索的数据(某du)

如此这个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.通过请求拿到响应:直接利用模板模拟浏览器发起请求:

Python爬虫 | 利用python爬虫获取想要搜索的数据(某du)
突然发现我们没有拿到想要的数据。难道是我们程序写错了吗?这时候就有的同学就开始抓狂了,呜呜呜(难受😔)…Python爬虫 | 利用python爬虫获取想要搜索的数据(某du)
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(主要是我们电脑浏览器的名称,版本信息),再试一次:

Python爬虫 | 利用python爬虫获取想要搜索的数据(某du)
成功“骗”过了服务器,这样就拿到了数据(高兴🥰),别着急,我们再思考一下,能不能通过修改一些参数,就让我们想找哪些数据就拿哪些数据,好,接下来我们就分析它的参数:

  1. 修改传递参数
    Python爬虫 | 利用python爬虫获取想要搜索的数据(某du)
    wd:xx,它是这样传递我们输入的文字的,那么我们创造一个字典类型的键值对,发送请求时,再将这个参数拼接上去,这样不就实现了我们的需求嘛(特别注意编解码的问题)
    Python爬虫 | 利用python爬虫获取想要搜索的数据(某du)
    哈哈,这里百度第二个安全验证出来了,根本原因是我们携带的一些参数有问题,因为还有一些参数在变,但是对于我们入门的童鞋处理起来不太友好,所以常用三种方法:
    1.将wd后面的参数直接去掉;(成功率不高)
    2.去掉HTTPS后面的是s,使用http协议;(成功率不高)
    3.使用cookie;(比较稳定)

    我选择使用第三种:
    Python爬虫 | 利用python爬虫获取想要搜索的数据(某du)
    这样就利用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库使用的时候已经非常详细的解释了,在此不在赘述,步骤相同,大家可以尝试用模板自己写一下(我个人的代码放在最后了)。如果有哪里不懂得,可以在评论区留言,博主会尽全力解答。
Python爬虫 | 利用python爬虫获取想要搜索的数据(某du)

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)

以上内容如有错误,欢迎大家指正,不胜感激,期待大家的三连和关注。😝文章来源地址https://www.toymoban.com/news/detail-427640.html

到了这里,关于Python爬虫 | 利用python爬虫获取想要搜索的数据(某du)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python网络爬虫爬取招聘数据(利用python简单零基础)可做可视化

    身为一个求职者,或者说是对于未来的职业规划还没明确目标的大学生来说,获取各大招聘网上的数据对我们自身的发展具有的帮助作用,本文章就简答零基础的来介绍一下如何爬取招聘数据。 我们以东莞的Python数据分析师这个职位来做一个简单的分析,页面如下图所示:

    2024年02月03日
    浏览(58)
  • Python下利用Selenium获取动态页面数据

    利用python爬取网站数据非常便捷,效率非常高,但是常用的一般都是使用BeautifSoup、requests搭配组合抓取静态页面(即网页上显示的数据都可以在html源码中找到,而不是网站通过js或者ajax异步加载的),这种类型的网站数据爬取起来较简单。但是有些网站上的数据是通过执行

    2024年02月06日
    浏览(73)
  • Python爬虫——Selenium在获取网页数据方面的使用

    目录 一、Selenium (一)引入  (二)启动浏览器 二、操作 (一)点击 (二)输入 三、数据获取 四、特点 五、抓取拉钩实例 六、其他操作 (一)窗口切换 代码 (二)操作下拉列表/无头浏览器 代码         一个电影票房的网站里,响应数据是一串完全看不懂的字符串

    2024年02月07日
    浏览(51)
  • 如何利用python调用API接口获取数据进行测试

    一、Python 可以使用 requests 库来调用 API 接口获取数据。以下是基本的步骤: 1.安装 requests 库 pip install requests 2.导入 requests 库 import requests 3.构建 API 请求的 URL 根据 API 文档,构建请求的URL。 例如,  https://api.example.com/posts  是获取所有帖子的 URL。 4.发送 API 请求 使用  requ

    2024年02月11日
    浏览(47)
  • 快乐学Python,数据分析之使用爬虫获取网页内容

    在上一篇文章中,我们了解了爬虫的原理以及要实现爬虫的三个主要步骤:下载网页-分析网页-保存数据。 下面,我们就来看一下:如何使用Python下载网页。 浏览器画网页的流程,是浏览器将用户输入的网址告诉网站的服务器,然后网站的服务器将网址对应的网页返回给浏览

    2024年01月17日
    浏览(54)
  • 【一个超简单的爬虫demo】探索新浪网:使用 Python 爬虫获取动态网页数据

    可以实战教爬虫吗,搭个环境尝试爬进去。尝试收集一些数据 一位粉丝想了解爬虫,我们今天从最基础的开始吧! 本文将介绍如何使用 Python 爬虫技术爬取新浪网首页的内容。新浪网作为一个内容丰富且更新频繁的新闻网站,是理解动态网页爬取的绝佳例子。 首先,确保你

    2024年02月04日
    浏览(55)
  • python爬虫之JS逆向基础小案例:网抑云数据获取

    嗨喽~大家好呀,这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 所用软件 解释器: python 3.8 编辑器: pycharm 2022.3 使用的模块 第三方模块: requests 数据请求 execjs pip install pyexecjs 内置模块(无需安装): nodejs 模块安装: win + R 输入cmd 输入安

    2024年01月20日
    浏览(48)
  • 【数据技术】利用Python获取高德地图POI数据——以上海瑞幸门店为例

    本文讲述 利用Python获取高德地图POI数据 的思路以及具体步骤。 此处以 上海 的 瑞幸门店 为例,目的是同时讲述 多边形搜索 、 搜索 以及 POI类型搜索 的具体用法。 本文 完整代码 的获取方式在 文末 ,有需求的小伙伴自取。 上海瑞幸门店地图可视化 上海瑞幸门店地

    2024年02月05日
    浏览(68)
  • python金融数据分析和可视化--03利用Akshare获取股票数据

    AKShare 是基于 Python 的财经数据接口库,目的是实现对股票、期货、期权、基金、外汇、债券、指数、加密货币等金融产品的基本面数据、实时和历史行情数据、衍生数据从数据采集、数据清洗到数据落地的一套工具,主要用于学术研究目的。 AKShare 的特点是获取的是相对权威

    2024年02月05日
    浏览(45)
  • 爬虫实战(一)Python+selenium自动化获取数据存储到Mysql中

      行话说得好,“爬虫学得好,牢饭吃到饱!”哈哈博主是因这句话入的坑,不为别的就为邀大家一起铁窗泪(bushi),本人虽小牛一只,但是喜爱捣鼓技术,有兴趣的小伙伴们可以共同探讨,也欢迎各位大佬们的指点,愿共同进步!   这次计划是翻墙爬取外网某网站

    2024年01月17日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包