元旦快要来了就意味着假期快要来了。有没有计划好元旦去哪里散心呢?

今天就用爬虫带你分析以下国内最热门城市哪些值得你去~

首先我们的目标网站是穷游网。

https://place.qyer.com/china/citylist-0-0-1/

我们要抓取的数据是这些热门城市的名称、排行榜、旅游人次和旅游景点。

老规矩,爬虫四部曲:

1.找爬虫所在url地址(系统性的网页分析)

2.发送网络请求

3.数据解析(我们所需数据)

4.保存数据

1.找爬虫所在url地址(系统性的网页分析)

首先我们来分析网页属于动态加载还是静态加载。教你一招最简单的办法。

如上图找到浏览器设置,禁止javascript加载,如果网页还如先前一般正常显示。即说明该网页属于静态加载。

2.咱们今天要分析的网站就属于一个静态加载。所以目标url就可以确定下来,即浏览器导航栏地址

url= https://place.qyer.com/china/citylist-0-0-1/

3.伪装成浏览器发送请求。为了防止网站反爬,我们需要对爬虫代码进行伪装,打开浏览器开发者模式可以看到网站发送请求时会携带这么多的参数。这里我们只需refer、user-agent(浏览器身份)进行伪装即可。

4.发送网络请求,需要数据请求模块requests模拟浏览器发送网络请求。

#m模拟浏览器发送网络请求

resp = requests.get(url, headers = headers)html_data = resp.textprint(html_data)

返回的结果其实和我们在浏览器里面看到的其实是一样的。

5.数据的解析,打开浏览器的开发者模式发现这些城市的信息都位于一个个li元素标签中。也就是说一个li元素内就是一个城市的信息。而所有的li元素又都在一个叫做ul的父标签之内。

所以我们首先要提取到ul这个父标签的位置。

6.我们可以看到ul所在位置有一个class = 'plcCitylist'的属性。

lis= selector.xpath('//ul[@class = "plcCitylist"]/li')

7.获取到了所有li的位置之后我们就可以循环获取li标签里面的城市信息了。

forliinlis:city_name = li.xpath('h3/a/text()').get()

#城市名称print(city_name)#

香港  澳门  台北  台湾  北京  上海  成都  广州  南京  杭州  厦门  深圳  重庆  三亚  珠海

8.同样方法我们可以获取到城市名称、旅游人数、热门景点、城市图片和城市详情等情况。

travel_name = li.xpath('h3/a/text()').get()#城市名称

travel_no = li.xpath('p[2]/text()').get()#旅游人数

travel_hot = li.xpath('.//p[@class = "pois"]/a/text()').getall()#热门城市

travel_hot = [hot.strip()forhotintravel_hot]

travel_hot ='、'.join(travel_hot)#join()合并列表对象

travel_url = li.xpath('h3/a/@href').get()#城市详情页面地址

travel_img = li.xpath('p/a/img/@src').get()#城市封面图片

结果打印如下:

香港   | 338157人去过 | 香港海洋公园、星光大道、维多利亚港、太平山、尖沙咀、金紫荆广场、香港迪士尼乐园、中环、弥敦道、兰桂坊、中银大厦、香港杜莎夫人蜡像馆、中环至半山自动扶梯、旺角、湾仔、黄大仙祠、铜锣湾、庙街、凌霄阁、重庆大厦 | //place.qyer.com/hong-kong/ | https://pic.qyer.com/album/user/213/10/Q0hWQxoGYg/index/cover

澳门| 199621人去过 |澳门大三巴牌坊、大炮台、议事亭前地、玫瑰堂、官也街、妈阁庙、氹仔岛、澳门渔人码头、民政总署大楼、澳门威尼斯人、大三巴街、澳门博物馆、金莲花广场、岗顶前地、玛嘉烈蛋挞店、澳门旅游塔、龙环葡韵住宅式博物馆、东望洋炮台、圣若瑟修院及圣堂、黑沙海滩| //place.qyer.com/macau/ |https://pic.qyer.com/album/user/1015/77/QElURx0AZE8/index/cover

9.最后一步就是我们的数据保存了,我们需要导入python自带csv模块。然后将所有我们获取到的数据保存在 '穷游网数据.csv' 文件中

withopen('穷游网数据.csv',mode='a',encoding='utf-8',newline='')asf:

csv_write = csv.writer(f)

csv_write.writerow([travel_name,travel_no,travel_hot, travel_url, travel_img])

来看打印结果:

穷游网数据.csv:

10.第一页的数据我们现在已经完美地保存下来了,接下来我们要获取剩下的170页数据。我们先来查看地址栏url规律

第1页:https://place.qyer.com/china/citylist-0-0-1/

第2页:https://place.qyer.com/china/citylist-0-0-2/

第3页:https://place.qyer.com/china/citylist-0-0-5/

第171页:https://place.qyer.com/china/citylist-0-0-171/

发现只有地址栏末尾的数字随着页数在变化。所以我们加上一个简单的循环即可。

for in range(171):# 1.找爬虫所在url地址(系统性的网页分析)

url ='https://place.qyer.com/china/citylist-0-0-{}/'.format(i)

好了到此为止所有爬虫部分已经完成,为了更友好的人际互动,我们再优化一下提示信息。

page = 0foriinrange(171):    page+=1print('--------正在爬取第{}页--------'.format(page))

还有为了方式ip被封,所以我们要给爬虫设置一个休眠时间,休眠时间取得是随机数。

time.sleep(random.random()*5)

运行结果如下(此处选取部分截图)

完整代码已经整理好,有需要的小伙伴公众号'印象python'内回复'旅游代码'即可获取!

元旦去哪儿?python爬虫告诉你!相关推荐

  1. 如何去使用Python爬虫来爬取B站的弹幕数据?

    哔哩哔哩众所周知是弹幕的天堂,视频观看人数越多,弹幕也就越多.今天小千就来教大家如何去使用Python开发一个爬虫来爬取B站的弹幕数据. 1.弹幕哪里找? 平常我们在看视频时,弹幕是出现在视频上的.实 ...

  2. 为什么黄牛票那么容易拿到?Python爬虫告诉你

    说Python是最容易入门,学得最快的编程语言,应该没人反对吧?Python可以用于网站后端的开发,数据分析师需要它,游戏开发者也用到它,主要的是Python爬虫可以获取或处理大量信息. 网络爬虫的流 ...

  3. Python 爬虫告诉你,国庆这几个景点千万别去!

    国庆七天小长假开启了 出去浪了吗? 当你计划好所有行程 出门时可能遇到以下这种情况 ...... 为避免以上情况出现 我用 Python 爬取了马蜂窝的出行数据之后 告诉你国庆这几个地方不要去! 真的 ...

  4. 一个人,一座城,你到底在乎什么?Python 爬虫告诉你!

    大家好,我是安果! 有时候,我们想知道生活在这座城市的人每天交流的事情,然后对数据进行一些分析,方便我们更好地了解城市的特征及居民的需求 以重庆为例,最火爆的论坛是购物狂,每天都有大量的帖子内容产生, ...

  5. 一个人,一座城,你到底在乎什么?Python 爬虫告诉你

    资源分享[这份资料必须领取~] 大家好! 有时候,我们想知道生活在这座城市的人每天交流的事情,然后对数据进行一些分析,方便我们更好地了解城市的特征及居民的需求 以重庆为例,最火爆的论坛是购物狂,每天都 ...

  6. python 爬虫 小电影 不会告诉网址_想看电影不知道看啥,python爬虫告诉你!

    闲着在家想看电影,但是猛地不知道要看啥电影,脑子想半天也想不出来一个好电影名字!干脆直接在豆瓣电影上获取最近热门的电影,然后一个一个挨着看打发时间! 获取豆瓣电影信息也是学爬虫的一个入门例子,不知道为 ...

  7. 自学python推荐书籍 知乎-在知乎上学 Python - 爬虫篇

    知乎是个好地方.虽然近年来,为了吸引更多的用户,知乎的定位与早期略有点偏离.但从内容质量和专业性来说,知乎仍然是国内数一数二的知识型社区.不少同学都是通过知乎发现了我们编程教室,我自己也经常会通过知乎 ...

  8. 外星人颜色python练习_在知乎上学Python爬虫

    有很多人正在入门Python爬虫,学习Python爬虫.在这个过程中,会遇到很多难题,许多小伙伴都会去寻找答案,但是因为答案的纷繁复杂和种类多样,往往要花上好些时间. 而码不理经常会在知乎上寻找学习问 ...

  9. 1000行代码入门python-在知乎上学 Python - 爬虫篇

    知乎是个好地方.虽然近年来,为了吸引更多的用户,知乎的定位与早期略有点偏离.但从内容质量和专业性来说,知乎仍然是国内数一数二的知识型社区.不少同学都是通过知乎发现了我们编程教室,我自己也经常会通过知乎 ...

最新文章

  1. nginx 稳定版 1.16.0 发布,支持动态加载 SSL 证书
  2. 组合筛选vue_Vue 3 组合式API介绍
  3. [react] react是什么?它的主要特点是什么?
  4. selenium之批量执行测试用例
  5. python多进程控制gui界面_Python优雅地终止了多进程和gui进程
  6. ViedoUtil获取视频的缩略图
  7. Web Server
  8. Verilog 7人投票表决器
  9. PrestaShop加速11招立刻加速PrestaShop外贸电子商务网站无额外插件
  10. win7计算机用户名在哪改,win7系统怎么更改用户账户名称|win7修改用户名的方法...
  11. 上海双非改考408,与上海计算所联合培养!上海第二工业大学计算机专硕!
  12. LeetCode刷题时遇到error: control reaches end of non-void function [-Werror=return-type]的解决方法
  13. 关于Chrome的广告和弹窗拦截插件
  14. 红色警戒2009java_命令与征服-红色警戒
  15. 校园实践-校园二手交易项目组-墨刀原型
  16. 神经网络的数学表达式,神经网络的数学基础
  17. 高等数学拾遗 矢量分析
  18. 如何拆台式计算机光驱,如何拆开光驱
  19. ThingsBoard RPC control
  20. 中国电信数据机房管理系统

热门文章

  1. python主网站网址是_python网站主题
  2. 捷联惯导-坐标系-观测值补偿-对准-编排-时间更新-测量更新
  3. yyyy-MM-dd HH:mm:ss.SSS中大小写的解释
  4. js 格式化日期yyyy-MM-dd hh:mm:ss
  5. 制定游戏机计算机配置清单,求吃鸡游戏电脑配置清单
  6. Zabbix学习小结-----介绍
  7. 解决Lua获取unity 文本内容时存在\u200B(8203)字符问题
  8. [C] zintrin.h : 智能引入intrinsic函数。支持VC、GCC,兼容Windows、Linux、Mac OS X
  9. python挖矿代码_python检测挖矿特征的几种方式
  10. IDC、CDN、云服务商如何进行IPv6改造升级?