热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python爬虫实践篇飞猪网站资料爬取

一、什么是网页的http请求?Get请求:地址栏上明文显示了

一、什么是网页的http请求?

Get请求:地址栏上明文显示了请求信息,即请求地址中带有符号 ? 的地址。请求速度快,但不安全

例如:
在这里插入图片描述
请求参数 wd 表示查询字段pn表示页数,即pn=0 -->第一页 pn = 10 -->第二页

POST请求:请求地址中不带POST表单数据,加密传输,常用于账号登录,很安全,但和前者相比速度慢。

例如:

在这里插入图片描述

二、什么是http请求头

告诉请求地址服务器,客户端的配置情况

在这里插入图片描述

练习:爬取百度搜索结果的前十页信息

python 代码

def baidu(wd="Curious chen"):
#
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36",
}
# 正则1:找到每一页的所有链接
data_match = r"data-tools=[\'\"]{1}({(.*?)})[\'\"]"
# 正则2:将链接中的标题和url提取出来
s_match = r".*title.*?:[\'\"](.*?)[\'\"].*?url.*?:[\'\"](.{4,})[\'\"]\}"
# 读取百度搜索结果的前十页
for i in range(10):
pn = i * 10
response = requests.get("https://www.baidu.com/s?wd=" + wd + "&pn=" + str(pn), headers=headers)
datas = re.findall(data_match, response.text)
print("第" + str(i+1) + "页")
for s_json in datas:
# 正则3 将"换成{“}
s_json = re.sub(r'"', '"', s_json[0])
s_json = re.match(s_match, s_json)
print(" title:" + s_json.group(1), "url:", s_json.group(2))
if __name__ == "__main__":
query = "飞猪"
baidu(query)

运行结果:

在这里插入图片描述

三、静态网页和动态网页

静态网页:网页中的所有数据,都在源代码中,请求一次链接均可得到。

动态网页:部分数据须经js渲染,动态添加到网页中,一次请求得到的源代码中的动态数据会错误或是不存在。

实战:飞猪旅游网站一旅游点的所有动态数据

此旅游点的部分动态数据如下:

在这里插入图片描述
在这里插入图片描述

判断是动态数据的条件:源网页中数据不存在,或错误。

第一步:右键 -->查看源代码(或使用快捷键 Ctrl + U),打开源代码页。
在这里插入图片描述

第二步:使用快捷键 Ctrl + F 打开搜索栏
在这里插入图片描述
第三步:输入上述图片所述的动态数据,
在这里插入图片描述

如何请求,或者说找到这些动态数据

第一步:右键 --> 检查 (或快捷键 F12)打开浏览器后台工作栏
第二步:选择功能栏上的Network,然后选择ALL所有数据类型
第三步,Ctrl + F 打开全局搜索栏
第四步:刷新页面
在这里插入图片描述

比较重要的两个功能键
在这里插入图片描述
第五步:搜索
在这里插入图片描述
第六步:查看请求头,分析请求头需要加上哪些参数,GET的请求参数怎么获得
在这里插入图片描述
经分析:获得每一个景点的动态数据只需要改变GET请求 id 参数即可

headers = {
"Referer": referer,
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)"
" Chrome/74.0.3729.169 Safari/537.36"
}
response = requests.get(
"https://traveldetail.fliggy.com/async/queryItemDetailAjaxInfo.do?id="+str(id)+"&categoryType=7",
headers=headers)

请求头加上referer,user-agent参数即可

第七步:分析json数据,提取需要的动态数据

在这里插入图片描述


推荐阅读
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
author-avatar
禎冬魔_784
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有