热门标签 | 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数据,提取需要的动态数据

在这里插入图片描述


推荐阅读
  • Swoole加密机制的安全性分析与破解可能性探讨
    本文深入分析了Swoole框架的加密机制,探讨了其在实际应用中的安全性,并评估了潜在的破解可能性。研究结果表明,尽管Swoole的加密算法在大多数情况下能够提供有效的安全保护,但在特定场景下仍存在被攻击的风险。文章还提出了一些改进措施,以增强系统的整体安全性。 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 在 Ubuntu 中遇到 Samba 服务器故障时,尝试卸载并重新安装 Samba 发现配置文件未重新生成。本文介绍了解决该问题的方法。 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
  • 在 CentOS 7 系统中安装 Scrapy 时遇到了一些挑战。尽管 Scrapy 在 Ubuntu 上安装简便,但在 CentOS 7 上需要额外的配置和步骤。本文总结了常见问题及其解决方案,帮助用户顺利安装并使用 Scrapy 进行网络爬虫开发。 ... [详细]
  • 利用爬虫技术抓取数据,结合Fiddler与Postman在Chrome中的应用优化提交流程
    本文探讨了如何利用爬虫技术抓取目标网站的数据,并结合Fiddler和Postman工具在Chrome浏览器中的应用,优化数据提交流程。通过详细的抓包分析和模拟提交,有效提升了数据抓取的效率和准确性。此外,文章还介绍了如何使用这些工具进行调试和优化,为开发者提供了实用的操作指南。 ... [详细]
  • 本文讨论了在进行 MySQL 数据迁移过程中遇到的所有 .frm 文件报错的问题,并提供了详细的解决方案和建议。 ... [详细]
  • 当PHP中的tempnam()函数被禁用后的应对策略与解决方案
    当 PHP 中的 `tempnam()` 函数被禁用时,开发者需要采取相应的替代方案以确保应用程序的正常运行。本文探讨了多种应对策略,包括使用 `sys_get_temp_dir()` 结合自定义文件命名方法,以及利用第三方库来生成临时文件。此外,还详细介绍了如何在不同操作系统和服务器环境中配置临时文件路径,以提高代码的兼容性和安全性。 ... [详细]
  • 如何在PHP中准确获取服务器IP地址?
    如何在PHP中准确获取服务器IP地址? ... [详细]
  • 全面解析JavaScript代码注释技巧与标准规范
    在Web前端开发中,JavaScript代码的可读性和维护性至关重要。本文将详细介绍如何有效地使用注释来提高代码的可读性,并探讨JavaScript代码注释的最佳实践和标准规范。通过合理的注释,开发者可以更好地理解和维护复杂的代码逻辑,提升团队协作效率。 ... [详细]
  • 帝国CMS中的信息归档功能详解及其重要性
    本文详细解析了帝国CMS中的信息归档功能,并探讨了其在内容管理中的重要性。通过归档功能,用户可以有效地管理和组织大量内容,提高网站的运行效率和用户体验。此外,文章还介绍了如何利用该功能进行数据备份和恢复,确保网站数据的安全性和完整性。 ... [详细]
  • FreeBSD环境下PHP GD库安装问题的详细解决方案
    在 FreeBSD 环境下,安装 PHP GD 库时可能会遇到一些常见的问题。本文详细介绍了从配置到编译的完整步骤,包括解决依赖关系、配置选项以及常见错误的处理方法。通过这些详细的指导,开发者可以顺利地在 FreeBSD 上完成 PHP GD 库的安装,确保其正常运行。此外,本文还提供了一些优化建议,帮助提高安装过程的效率和稳定性。 ... [详细]
  • 在PHP中实现腾讯云接口签名,以完成人脸核身功能的对接与签名配置时,需要注意将文档中的POST请求改为GET请求。具体步骤包括:使用你的`secretKey`生成签名字符串`$srcStr`,格式为`GET faceid.tencentcloudapi.com?`,确保参数正确拼接,避免因请求方法错误导致的签名问题。此外,还需关注API的其他参数要求,确保请求的完整性和安全性。 ... [详细]
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社区 版权所有