ython爬虫爬虫基础入门看这一篇就够了腾讯云开发者社区

其实,一开始学python的时候,我是冲着数据处理分析去了,那个pandas什么的。后来,发现爬虫挺好玩,可以解决纯手工采集网上数据的繁琐问题,比如我用的比较多的爬取taptap某游戏评价内容、某视频网站某剧的弹幕、某评的店铺信息、某牙主播信息等等。

关于爬虫,我也只会一些比较基础的操作,不过个人经验上感觉这些基础基本可以满足比较常规化的需求。对于进阶的爬虫技巧,大家在了解熟悉爬虫基础后自然会有进阶学习的思路与途径。

接下来,我们进入主题吧~

把爬虫的过程模块化,基本上可以归纳为以下几个步骤:

当我们有一个目标网站,有时候会发现对于静态网页,我们只需要把网页地址栏中的URL传到get请求中就可以直接取到网页的数据。但如果这是动态网页,我们便无法通过简单的传递网页地址栏的URL给get请求来获取网页数据,往往这个时候,我们进行翻页的时候还会发现网页地址栏中的URL是不会发生变化的。

接下来,我们来分别介绍这两种情况下如何获取真实的页面数据URL地址。

对于静态网页来说,其实网页地址栏中的URL就是我们需要的。

对于动态网页来说,我们一般可以通过以下几个步骤找到真实URL地址:

为了便于找到真实的URL地址,我们可以在开发者模式中找以下截图中的几点,preview是预览结果,可以便于我们进行匹配定位具体的Name。

虎牙星秀区

当我们定位到具体的Name后,右侧选择Headers可以查看到请求网页需要的相关参数信息,而且比较好拟清其变化规律。以虎牙星秀为例,其真实URL地址及变化规律如下:

基础 url 地址如下:

请求参数parames如下:

真实URL地址

当我们确定了真实数据的URL后,这里便可以用requests的get或post方法进行请求网页数据。

我们得到的是一个Response对象,如果我们想要获取网页数据,可以使用text或content属性来获取,另外如果获取的网页数据是json格式的则可以使用Requests 中内置的 **json()**解码器方法,助你处理json 数据。

对于一些动态网页,请求的网址是基础url和关键字参数组合而成,这个时候我们可以使用 params 关键字参数,以一个字符串字典来提供这些参数。

通常,你想要发送一些编码为表单形式的数据——非常像一个 HTML 表单。要实现这个,只需简单地传递一个字典给 data 参数。你的数据字典在发出请求时会自动编码为表单形式:

很多时候你想要发送的数据并非编码为表单形式的。如果你传递一个 string 而不是一个 dict,那么数据会被直接发布出去。

此处除了可以自行对 dict 进行编码,你还可以使用 json 参数直接传递,然后它就会被自动编码。

在模拟请求时,如果不设置请求头的话是比较容易被网站发现是来自爬虫脚本,一些网站会对这种模拟请求进行拒绝。因此我们可以简单设置一下请求头做伪装,一般是设置浏览器。

其实,对于请求头还可以设置很多参数,具体大家可以在实际爬虫过程中在开发者模式看看里面的请求头模块进行分析处理。

虎牙星秀请求头

响应码分为五种类型,由它们的第一位数字表示:1xx:信息,请求收到,继续处理 2xx:成功,行为被成功地接受、理解和采纳 3xx:重定向,为了完成请求,必须进一步执行的动作 4xx:客户端错误,请求包含语法错误或者请求无法实现 5xx:服务器错误,服务器不能实现一种明显无效的请求

上面有提到我们请求的网页数据有Html源码文本或者是json字符串文本,两者的解析方式不同。以下我们分别进行简单说明,大家在实际操作中视情况而定即可。

对于网页html文本来说,这里介绍Beautiful Soup、xpath和re正则表达式三种解析方法。

贝壳二手房

首先安装pip install beautifulsoup4。

房源名称

获取房源的名称的代码如下:

房源其他信息大家可以自己处理,强化学习!

XPath,全称 XML Path Language,即 XML 路径语言,它是一门在 XML 文档中查找信息的语言。

首先安装lxmlpip install lxml。

常见的规则如下:

表达式

描述

nodename

选取此节点的所有子节点

从当前节点选取直接子节点

//

从当前节点选取子孙节点

选取当前节点

..

选取当前节点的父节点

选取属性

右键可获取xpath

通过copy获取的xpath://*[@id="beike"]/div[1]/div[4]/div[1]/div[4]/ul/li[1]/div/div[1]/a

其他房源信息,大家可以自行处理,强化学习!

json文本解析

如此解析后得到的数据就是字典,然后我们在看看字典中哪些字段是我们需要的,取出即可。

当我们获取了到想要的数据后,便可以写入本地了。

对于文本类数据,可以通过csv模块或pandas模块进行写入到本地csv文件或excel文件;同时也可以用pymysql模块写入到数据库或者sqlite写入到本地数据库。

对于视频或者图片,可以open一个文件然后写入二进制内容后保存本地亦可。

THE END
0.解析JSON数据系列1:在网页上显示Json数据打开网页出现json数据本文介绍如何在网页上显示JSON数据,讲解JSON的两种结构——名称/值对集合和值的有序列表,并提供一个服务器端(jsp+servlet)生成JSON字符串,客户端解析并在网页展示的实例。通过实体类、服务类、工具类和Servlet的实现,展示了一种处理JSON数据的整体思路。 Json的全称:JavaScriptObjectNotation jvzquC41dnuh0lxfp0tfv8qwqunjy~yck1gsvrhng1jfvjnnu1::2;>869
1.使用JSONJavaScript 对象表示法(JSON)是用于将结构化数据表示为 JavaScript 对象的标准格式,通常用于在网站上表示和传输数据(例如从服务器向客户端发送一些数据,因此可以将其显示在网页上)。你会经常遇到它,所以在本文中,我们向你提供使用 JavaScript 处理 JSON 的所有工作jvzq<84fgxkmqyjt0ou{kuqc0qxh1ƒm/EP5eqlx1Nggsp8OcxcYdtruv1Qhkglyu1LYPP
2.JavaScriptJSONJSON 是存储和传输数据的格式。 JSON 经常在数据从服务器发送到网页时使用。什么是 JSON? JSON 指的是 JavaScript Object Notation JSON 是轻量级的数据交换格式 JSON 独立于语言 * JSON 是“自描述的”且易于理解 * JSON 的语法是来自 JavaScript 对象符号的语法,但 JSON 格式是纯文本。读取和生成 JSON 数据的jvzquC41yy}/y
3.在线JSON校验格式化工具(BeJSON)在线,JSON,JSON 校验,格式化,xml转json 工具,在线工具,json视图,可视化,程序,服务器,域名注册,正则表达式,测试,在线json格式化工具,json 格式化,json格式化工具,json字符串格式化,json 在线查看器,json在线,json 在线验证,json tools online,在线文字对比工具jvzquC41yy}/dnouqp4dqv4
4.响应式网页设计之JSON对象网页后加.json本文详细讲解了JavaScript中的JSON与JS对象的区别与转换,包括JSON的创建、访问,JS对象的创建、遍历以及两者之间的相互转换。还涉及实用技巧如数组元素计数和对象排序,以及一个动态待办事项管理的网页案例。 JavaScript对象编程(五) 一、JSON与JS对象 1.什么是JSON jvzquC41dnuh0lxfp0tfv8vsa6>6;;=491gsvrhng1jfvjnnu1727<9477>
5.读取打开网页后的JSON文件火山引擎是字节跳动旗下的云服务平台,将字节跳动快速发展过程中积累的增长方法、技术能力和应用工具开放给外部企业,提供云基础、视频与内容分发、数智平台VeDI、人工智能、开发与运维等服务,帮助企业在数字化升级中实现持续增长。本页核心内容:读取打开网页后的JSON文件jvzquC41yy}/xxqegpmjpn3eqo5ujnrg15=::A:2/F38/:
6.如何获得网页中的json数据pyming如何获得网页中的json数据 在python抓取图片的时候,有时候却找不到对应的网址,可能存在json中,所以如何用python解析json数据,小白看了几个论坛后自己总结一些以便加深印象。 1.requests.get(url,params) 获得请求数据 importrequestsdefget_many_pages(keyword, page): params=[]#收集 jvzquC41yy}/ewgnqiy/exr1\j{.Z~jokpm0r8=589<267mvon
7.怎样使用Chrome浏览器获取网页页面的Json数据从网页页面上批量下载jpg格式图片,并按照数字递增命名保存到指定的文件夹。 Web地址:http://p.weather.com.cn/2017/06/2720826.shtml#p=1去E:\Photo查看 正则表达式相关知识:正则表达式30分钟入门教程 智能推荐 Chrome浏览器安装JSON插件 JSON-handle Chrome插件开发背景 对于json的数据如果不编排一下格式查看起来很jvzquC41yy}/rrfpujko0lto1cxuklqg1;>49:>72:811
8.网络编程——JSON解析网页解析jsonE.如果键值对的类型不是基本类型,而是对象或者数组,则需要继续解析,此时分为两种情况,第一种是情况:键值对的值的类型是对象,此时可以选择继续调用cJSON_GetObjectItem()函数。 F.如果键值对的类型不是基本类型,而是对象或者数组,则需要继续解析,此时分为两种情况,第一种是情况:键值对的值的类型是数组,此时可以选择jvzquC41dnuh0lxfp0tfv8~eu8<0c{ykenk0fnyckny03>5652=4;
9.高级网页设计—“json和ajax”json网页本文深入探讨了JSON作为数据交换格式的特点与应用,包括其自我描述性和轻量化特性。同时,详细介绍了AJAX的工作原理,如何使用AJAX与服务器进行异步数据交换,以及如何结合JSON来动态更新网页部分内容,实现数据的高效传输与处理。 json 一种轻量级的数据交换格式。 jvzquC41dnuh0lxfp0tfv8|gkzooa=6278>198ftvkimg8igvcomu8=6;6=:;@
10.html页面展示json数据并格式化的方法HTML/Xhtml网页制作这篇文章主要介绍了html页面展示json数据并格式化的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧GPT4.0+Midjourney绘画+国内大模型 会员永久免费使用!【 如果你想靠AI翻身,你先需要一个靠谱的工具!】 json数据在html页面展示并格式化 一jvzquC41yy}/lk:30pku1€jd1992;>60jvsm
11.IE8中的原生JSON支持|MicrosoftLearn对现有的网页有何影响? ES3.1 JSON提案是被流行的 json2.js所使用的主要因素。我们也采用 JSON这个名字。全局对象 JSON能够被重写。然而,它不再是一个未定义的对象。这与通过在脚本语言中引入 new关键字是相同的。采用一个名字偶尔会影响现有的代码。使用 json2.js的页面不太可能会受影响。除了极少数的例外,所jvzquC41oujo0vnetqyph}3eqo5{j6hp1fj5596360gtr
12.强大易用的网页在线excel转json工具,值得一看「建议收藏」强大易用的网页在线excel转json工具,值得一看 很多游戏公司或者软件公司,客户端里一般无法读取策划写的excel配置表,需要先转成可以用的格式,例如json,xml格式。 而现在普遍也是 json格式传输,因此很有必要把excel格式文件转成json格式数据 这里我一般是用这个在线EXCEL转JSON工具:http://www.yzcopen.comjvzquC41enuvf7ygpekov7hqo1jfxnqqrgx0c{ykenk049<9;4>
13.在线HTTP接口测试Response Body (返回值是JSON,会自动格式化) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Requests Header | Http Header Header解释示例 Accept指定客户端能够接收的内容类型Accept:text/plain,text/html Accept-Charset浏览器可以接受的字符编码集。Accept-Charset:iso-8859-5 jvzquC41uqptqw3eqo5iv}utgs{fu}4
14.o网页链接数据编辑器 层级生成器 DataV.AI 数据内容创作助手 new 数据版本: areas_v3 1.点击左侧地图选择行政区划范围,或在下方输入行政区划编码、名称搜索 中华人民共和国 当前选择: 地名:中华人民共和国adcode:100000 2.选择需要的数据粒度 国省市 JSON API 或 jvzq<84fcvgw0jqk{wt/exr1rqxucu4uejupn8fvncy0c{jcaukmglyqt
15.在html中显示JSON数据的方法HTML/Xhtml网页制作在项目中我们需要将json数据直接显示在页面上,但是如果直接显示字符串很不方便查看,下面小编给大家带来了html中显示JSON数据的方法,需要的的朋友参考下吧GPT4.0+Midjourney绘画+国内大模型 会员永久免费使用!【 如果你想靠AI翻身,你先需要一个靠谱的工具!】 背景: 有时候我们需要将json数据直接显示在页面上(比如在做jvzquC41yy}/lk:30pku1€jd17;4:B=0jvsm
16.网页中实现JSON的编辑与显示暗夜精灵nightelf网页中实现JSON的编辑与显示 https://github.com/josdejong/jsoneditor 好文要顶 关注我 收藏该文 微信分享 暗夜精灵nightelf 粉丝- 44 关注- 2 +加关注 0 0 升级成为会员 « 上一篇: xcode5 ios7升级后的一系列问题解决 » 下一篇: 防止重复提交的几种办法 jvzquC41yy}/ewgnqiy/exr1c9957?<:1r55;:54394ivvq
17.Java实现json数据处理的常用脚本分享java二、网页的Json数据和java代码的Map数据 真实业务需求中的数据结构比较复杂,多层嵌套,比如请求url的json数据:map中嵌套list,然后list的每个元素是map,这个map又嵌套了map。 小细节:要注意嵌套的是map还是list(因为0、1、2、3、4 既可能是索引下标,也可能只是key): 通过火狐浏览器折叠后的形状做判断,比如{}jvzquC41yy}/lk:30pku1jwvkerf1;<8:7;/j}r
18.PythonAjax爬虫案例分享python3.1 获取网页json格式数据1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 def get_page(page_num): global headers headers = { 'Host': 'so.toutiao.com', #'Referer': 'https://so.toutiao.com/search?keyword=%E8%A1%97%E6%8B%8D&pd=jvzquC41yy}/lk:30pku1jwvkerf1;88687/j}r
19.Java爬虫008网页内容解析:JSON解析51CTO博客上述字符串虽包含JSON,但并不能直接用org.json、Gson和Fastjson等工具进行直接解析,因为其头部和尾部包含多余的字符(“jQuery6(”和“)”)。为使上述字符串能够正常解析,需要对其进行预处理(掐头去尾)操作,将其转化成标准的JSON字符串。 2、代码示例 jvzquC41dnuh0>6evq4dqv4wa3939;=3;1<1:97;:
20.前端领域JSON的跨域数据传输网页传jsonJSON(JavaScript Object Notation):一种轻量级的数据交换格式,基于JavaScript的一个子集。它采用完全独立于编程语言的文本格式来存储和表示数据,易于人阅读和编写,同时也易于机器解析和生成。 同源策略(Same-Origin Policy):是浏览器的一个重要安全机制,它限制了一个源(协议、域名和端口)的网页如何与另一个源的资源进行jvzquC41dnuh0lxfp0tfv87724e:3>8694=0c{ykenk0fnyckny03=<597:43