点击上方“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学习群请在后台回复【入群】
万水千山总是情,点个【在看】行不行
/今日留言主题/
说一两个你常用的爬虫库吧~~
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
在 php 5.4 之后有一个常量 JSON_UNESCAPED_UNICODE 可以解决转 json 时中文乱码问题:json_encode($json,JSON_UNESCAPED_UNICODE)但是php 5.3 怎么解决中文乱码问题呢?我最近维护的项目是 php5.3 写的,哭死!可以使用正则把这个问题解决<?php/** * Created by PhpStorm....
/*二分查找的递归与非递归算法*/#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
一 实战[[email protected] ~]# systemctl start docker[[email protected] ~]# docker run hello-worldUnable to find image 'hello-world:latest' locallylatest: Pulling from library/hello-world9a0669468bf7: Pul
&lt;c:if test="${a=b&amp;&amp;c==d}"&gt;&lt;/c:if&gt;
JSON. toJSONString(obj) 打印为空 的原因是没有 提供 get() 方法class Person { /*名字(必须)*/ private final String name; /*性别(必须)*/ private final String gender; /*年龄(非必须)*/ private final String age; private Person(Builder builder) { this.na
前端小题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 =
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好麻烦,每次出错都要从头开始下...
BasicDemo判断数组中元素是否为空的时候,一般用foreach,因为具体应用中多是要foreach,其实如果单纯的过滤php空数组的话,可以使用php函数array_filter(). arrayarray_filter ( array [, callback callback]) array_filter() 依次将 array 数组中的每个值传递到ca
先看看PE文件格式的大致布局:基本概念PE文件使用的是一个平面地址空间,所有代码和数据都合并在一起,组成一个很大的结构。基地址PE文件载入内存后,会映射文件内存,出事内存地址称为基地址。不能被映射的数据被放在文件的尾部。一般,EXE文件的基地址为400000h,DLL文件的基地址为10000000h虚拟地址PE文件被映射到内存中,每个程序有自己的虚拟空间,这个虚...
一:常用的选择器:(李昌辉)基本选择器$(”#myDiv”) //匹配唯一的具有此id值的元素$(”div”) //匹配指定名称的所有元素$(”.myClass”) //匹配具有此class样式值的所有元素$(”*”) //匹配所有元素$(this) //匹配自身$(”div,span,p.myClass”) //联合所有匹配的选择器层叠选择器$(”form i...
命名的系统异常产生原因ACCESS_INTO_NULL未定义对象CASE_NOT_FOUNDCASE 中若未包含相应的 WHEN ,并且没有设置 ELSE 时COLLECTION_IS_NULL集合元素未初始化CURSER_ALREADY_OPEN游标已经打开DUP_VAL_ON_INDEX唯一索引对应的列上有重复的值INVALID_CURSOR在不合法的游标上进行操作INVALID_NUMBER...