手把手教你利用Python网络爬虫获取旅游景点信息_Python进阶者的博客-程序员秘密

点击上方“Python爬虫与数据挖掘”,进行关注

回复“书籍”即可获赠Python从入门到进阶共10本电子书

桃之夭夭,灼灼其华。

/1 前言/

    当我们出去旅游时,会看这个地方有哪些旅游景点,景点价格、开放时间、用户的评论等。

    本文基于Python网络爬虫技术,以hao123旅游网为例,获取旅游景点信息。

/2 项目目标/

    获取网站的景点名称、开放时间、精彩点评、价格等信息。

/3 涉及的库和网站/

    先列出网址,如下所示:

网址:https://go.hao123.com/ticket?city=%E5%B9%BF%E5%B7%9E&theme=all&pn=1

    网址city=%E5%B9%BF%E5%B7%9E指的是广州这个城市、pn指的是页数。

    需要用到的库:requests、lxml、pprint

/4 具体实现/

    1. 导入我们需要的库

import requests
from lxml import etree
from pprint import pprint

    2. 导入库之后,我们定义一个class类,然后定义一个init方法继承self再定义一个主函数main,定义一个init方法:首先准备url地址,headers,如下图所示。

    3. 定义一个请求函数,获取响应数据函数:

    4. 请求到数据后,我们需要把这个数据进行解析:

    5. 获取景点名称二级页面链接:使用xpath查找链接路径用谷歌浏览器选择开发者工具或者按F12,选择Elements按数字1、2操作找到旅游景点名称二级页面链接。

    6. 根据分析,我们可以撸下代码。

    7. 获取二级页面链接后,发送请求获取响应,解析数据。定义一个字典,保存景点名称、开放时间、精彩点评、价格。使用判断语句判断里面内容是否是空的。

    8. 最后定义一个main函数,如下图所示。

/5 效果展示/

    1. 点击绿色按钮运行,将结果显示在控制台,如下图所示。输入你要爬取的页数。

/6 小结/

1. 不建议抓取太多数据,容易对服务器造成负载,浅尝辄止即可。

2. 希望通过这个项目,能够帮助大家更好的了解旅游景点。

3. 本文基于Python网络爬虫,利用爬虫库,实现旅游网站部分信息的抓取。

4. 欢迎大家积极尝试,有时候看到别人实现起来很简单,但是到自己动手实现的时候,总会有各种各样的问题,切勿眼高手低,勤动手,才可以理解的更加深刻。

5. 如果本文源码的小伙伴,请在后台回复“旅游”两个字进行获取,觉得不错,记得给个Star噢~

------------------- End -------------------

往期精彩文章推荐:

欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持

想加入Python学习群请在后台回复【入群

万水千山总是情,点个【在看】行不行

/今日留言主题/

说一两个你常用的爬虫库吧~~

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/pdcfighting/article/details/106561377

智能推荐

北京交通大学官网页面模仿_模仿官网代码_友农的博客-程序员秘密

HTML代码<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>北京交通大学</title> <link rel="stylesheet" href="ind

php5.3 解决 json_encode 中文乱码问题_卩杉的博客-程序员秘密

在 php 5.4 之后有一个常量 JSON_UNESCAPED_UNICODE 可以解决转 json 时中文乱码问题:json_encode($json,JSON_UNESCAPED_UNICODE)但是php 5.3 怎么解决中文乱码问题呢?我最近维护的项目是 php5.3 写的,哭死!可以使用正则把这个问题解决<?php/** * Created by PhpStorm....

二分查找的递归与非递归算法_xsbailong的博客-程序员秘密

/*二分查找的递归与非递归算法*/#include #include using namespace std;bool bisrch( int low,int high,int v,int *text ) //递归写法{ int i,mid; mid=( low+high )/2; if( low>high ) return false; if( v

运行最简单的Docker容器hello-world_docker hello-world镜像运行测试一下_chengqiuming的博客-程序员秘密

一 实战[[email protected] ~]# systemctl start docker[[email protected] ~]# docker run hello-worldUnable to find image 'hello-world:latest' locallylatest: Pulling from library/hello-world9a0669468bf7: Pul

jsp中c标签c:if 加多个条件_jsp的c标签的if三个条件_以后的以的博客-程序员秘密

<c:if test="${a=b&&c==d}"></c:if>

JSON. toJSONString(obj) 打印为空 的原因是没有提供 get() 方法_json.tojsonstring结果为空_Asker.J的博客-程序员秘密

JSON. toJSONString(obj) 打印为空 的原因是没有 提供 get() 方法class Person { /*名字(必须)*/ private final String name; /*性别(必须)*/ private final String gender; /*年龄(非必须)*/ private final String age; private Person(Builder builder) { this.na

随便推点

前端小题_Make Life Getting Better的博客-程序员秘密

前端小题1.我们现在要实现一个红绿灯,把一个圆形 div 按照绿色 3 秒,黄色 1 秒,红色 2 秒循环改变背景色function sleep(duration){return new Promise(function(reslove){setTimeont(reslove, duration)})}async function changeColor(duration, color) {documet.getElementById(‘light’).style.background =

win10+yolov5尝鲜体验_yolov5的requirement_qq_27158179的博客-程序员秘密

1. 运行环境win10python3.8.102. 准备源码和模型源码:git clone git://github.com/ultralytics/yolov5模型:官方权重可以在这里下载:https://github.com/PeterH0323/Smart_Construction3. 安装python依赖python的依赖在这里yolov5/requirement.txt但是pip install -r requirement.txt好麻烦,每次出错都要从头开始下...

php函数array_filter()过滤php的空元素_php array_filter_允哥的博客-程序员秘密

BasicDemo判断数组中元素是否为空的时候,一般用foreach,因为具体应用中多是要foreach,其实如果单纯的过滤php空数组的话,可以使用php函数array_filter(). arrayarray_filter ( array [, callback callback]) array_filter() 依次将 array 数组中的每个值传递到ca

第2天:《加密与解密》-PE文件格式(一)_文档加密成lenc格式_S1lenc3的博客-程序员秘密

先看看PE文件格式的大致布局:基本概念PE文件使用的是一个平面地址空间,所有代码和数据都合并在一起,组成一个很大的结构。基地址PE文件载入内存后,会映射文件内存,出事内存地址称为基地址。不能被映射的数据被放在文件的尾部。一般,EXE文件的基地址为400000h,DLL文件的基地址为10000000h虚拟地址PE文件被映射到内存中,每个程序有自己的虚拟空间,这个虚...

Jquery元素选取、常用方法_weixin_30855099的博客-程序员秘密

一:常用的选择器:(李昌辉)基本选择器$(”#myDiv”) //匹配唯一的具有此id值的元素$(”div”) //匹配指定名称的所有元素$(”.myClass”) //匹配具有此class样式值的所有元素$(”*”) //匹配所有元素$(this) //匹配自身$(”div,span,p.myClass”) //联合所有匹配的选择器层叠选择器$(”form i...

Oracle预定义的21个系统异常类型_Dark丶照萤映雪的博客-程序员秘密

命名的系统异常产生原因ACCESS_INTO_NULL未定义对象CASE_NOT_FOUNDCASE 中若未包含相应的 WHEN ,并且没有设置 ELSE 时COLLECTION_IS_NULL集合元素未初始化CURSER_ALREADY_OPEN游标已经打开DUP_VAL_ON_INDEX唯一索引对应的列上有重复的值INVALID_CURSOR在不合法的游标上进行操作INVALID_NUMBER...

推荐文章

热门文章

相关标签