在之前学习爬虫的过程中,发现这个网址拿来练习是非常的舒服。现在将这个爬取的过程写下来分享给大家。

网址:https://hotel.jd.com/list.html?cityId=36&cityName=北京&star=2&checkInDate=2019-04-02&checkOutDate=2019-04-03
在这里使用了第三方库 requests 2.19.1

爬虫的思路还是一样:一、请求访问服务器(获取网页字符串);二、解析数据;三、数据存储(本地文本操作)。

现在我们开始操作啦!

一、请求访问服务器,获取网页字符串

我们用谷歌浏览器进入到该网址界面,按键盘上的F12就会显示出开发者工具。

不按F12也可以通过Ctrl + Shift + I 显示出,再或者点浏览器右上方人像图形旁边的三个点找到更多工具再找到开发者工具。
接下来我们按F5来刷新页面通过开发者工具获取网页的详情信息。

通过开发者工具的功能发现网页的数据存放在XHR下的getHotelList中。
获取访问getHotelList的访问方式

从上图我们获取了url和**访问的方法(post)**则可以写:

response = requests.post(url,data)

来访问该网页。

二、解析数据


从Response中我们可以看到我们即将获取的网页数据长什么样子。这里的数据是json数据所以我们用json来解析

res = json.loads(response.text)

提取json中的数据有个小技巧,就是将它复制粘贴下来通过pycharm格式化来分析。类似下图这样:

三、数据存储,本地文本操作

到这里基本已经可以爬到数据了。关于存储,我之前查阅了关于打开本地文本open函数with open的区别,相比之下还是用with open会比较好一点。(你们也可以去查阅一下,这里就不多做说明了)。

  with open('F:\\酒店.txt', 'w', encoding='utf-8') as fp:fp.write(items)

结合上面爬取的思路整理代码…
好了,接下来就是展示代码的时间了

import requests
import jsonclass Spider(object):def response(self, url, data, headers):response = requests.post(url, data=data, headers=headers)return responsedef parse(self, response):res = json.loads(response.text)items = {}for i in res['body']['list']:items[i['name']] = i['price']return itemsdef download(self, items):with open('F:\\酒店.txt', 'w', encoding='utf-8') as fp:for k, v in items.items():fp.write('%s:%d' % (k, v) + '\n')def crawl(self):crawl_headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36','Referer': 'https://hotel.jd.com/list.html?cityId=36&cityName=%E5%8C%97%E4%BA%AC&star=2&checkInDate=2019-04-02&checkOutDate=2019-04-03','Cookie': '__jdu=1400597153; areaId=19; ipLoc-djd=19-1607-3155-0; PCSYCityID=1607; shshshfpa=5dc91bd4-558f-f05e-0845-711a63bc9670-1553655263; shshshfpb=e7IhDHUS%2FucDWZ7ll4X239A%3D%3D; 3AB9D23F7A4B3C9B=SQRMRAYUZJC4KNRTNFQ7FA36BPXYZ3HJKC7LLPKD23I2HEMPF2QZ3ERGRWZ7THUD2RKOASDYEG4ZFDZUNFGIORW2NI; mt_xid=V2_52007VwMXU1xcWlwfTRtsDW8GFQEJW1BGT0ERCRliBRNRQQtUUhZVSl8BZVYQBllcU1wbeRpdBW8fE1BBW1pLHkESXgxsBhZiX2hSah1OGF0NZgcRU21bWlo%3D; shshshfp=a74e852b8be88478a1d6cbb925e7b451; _gcl_au=1.1.1474258592.1553823527; unpl=V2_ZzNtbRFVQRImC0BUe0wIDGIAQQlKAkQWfQETUSkRXgA1UEFYclRCFX0UR1FnGFwUZwYZXUJcQxRFCEdkeBBVAWMDE1VGZxBFLV0CFSNGF1wjU00zQwBBQHcJFF0uSgwDYgcaDhFTQEJ2XBVQL0oMDDdRFAhyZ0AVRQhHZHscXQRjCxRdRlVzJXI4dmR8G10AYgYiXHJWc1chVEBScxldBSoDF1xDU0sTdQxEZHopXw%3d%3d; CCC_SE=ADC_HagcdTdLh6Bd%2b9Dbuc4H1XOsneKL5%2fvGmGzPeeXT0aCVcHuXI9SA2gOKoLHZoQWEFekJJJYGaARh8NOCcJmKVDKtj3Ld%2f3IF1ob3VDZ79YIgYfYBB8jY6vJ7P4JmaPx0IwDkFXTMLW2MYlBNyJM2PPHbW5dRG%2fwB8x8xBtvT9GjwStShfLrRAzwLQPXft7PZpbIskOHjVWmguQsMTouHM4JuMzC2u0sonszJM3AtyPWMYRIw9xbhIhoEZxIEJ12N8VUH8iiNRBl8V5ow1VdzA2f3zCDkK3aruOXaReW3BsxdWQZLfEC0ChOUC73ixD8N3SPSWKFi%2b0w74COGGYV0V4k1tReagX0Mbbk5%2bS4CfzVbwmwUL5Q16698F%2fmY8oXXpyd6X6ewXZMTZmSVqOt2W%2f7sk8iWOcuQSuBli94G%2bgXCph9AVYgAbgMOd7A50YGhdQsHxCqfI%2fb1fMh3nfRCcxCOzlv7XrRAswEG1Hm5d9aq2n0g5xf7Mx4%2fubxaFVNsKTSbKIEoHkvOL%2f01uRnabLWJBTfROEe6SMpwGEwB3h8L1LWO88k%2b5gGwnYXxb0dsNYt%2fAmhv2K1BaPP7XATtQXZ0XL8KmUFXx9NKdBQsFQnegtDvKE7RC7awQxjgvx4vN%2fBwaY2oWaFTNzx9MTjh0dcDFbTI4wSLS7L%2fAkXGMOkxLPLtz%2fqHNlxKpGjbiZWIc1PWpgq8U8ijVYV3A9PlSw6svP7JWzT5bJ8CrbteLrbtRVp8vXNc2Ih%2bOXaMwfaE; __jda=122270672.1400597153.1553655131.1554091098.1554099071.6; __jdc=122270672; __jdv=122270672|baidu-pinzhuan|t_288551095_baidupinzhuan|cpc|0f3d30c8dba7459bb52f2eb5eba8ac7d_0_b336b2711de842be9d6298d4c934cbb4|1554099071187; __jdb=122270672.7.1400597153|6.1554099071','Content-Length': '196'}crawl_url = 'https://hotel.jd.com/api/json/getHotelList'crawl_data = {'cityId': '36','checkInDate': '2019-04-02','checkOutDate': '2019-04-03','pageSize': '30','pageNum': '1','poi': '%5B%5D'}response = self.response(crawl_url, crawl_data, crawl_headers)items = self.parse(response)self.download(items)if __name__ == '__main__':c = Spider()c.crawl()

在这份代码中我获取的是城市cityId为36的北京市,pageNum为第一页的数据。
如果小伙伴看懂了这个只爬了一个城市一页的代码,那可以再尝试爬取该市全部页数的数据。
该市有1179页数据。做到这两个的功能一个是控制pageNum变量,另一个是控制cityId变量。

只一页存储结果展示:

它原本的json数据中提供的信息有很多,为了观看的简洁度,这里我只提取了name和price。
如发现可以改进的地方或者哪里做得不好,希望大家能够提出多多交流。

Python爬虫 --爬取京东酒店旅行信息相关推荐

  1. python 爬虫 爬取高考录取分数线 信息

    原文链接: python 爬虫 爬取高考录取分数线 信息 上一篇: axios 原生上传xlsx文件 下一篇: pandas 表格 数据补全空值 网页 https://gkcx.eol.cn/scho ...

  2. python爬虫爬取京东、淘宝、苏宁上华为P20购买评论

    爬虫爬取京东.淘宝.苏宁上华为P20购买评论 1.使用软件 Anaconda3 2.代码截图 三个网站代码大同小异,因此只展示一个 3.结果(部分) 京东 淘宝 苏宁 4.分析 这三个网站上的评论数据 ...

  3. python爬虫爬取58同城租房信息(使用动态IP)输出Excel文件

    python爬虫爬取58同城信息(使用动态IP) 新手,为了做一个数据分析,搞了几天,终于搞出来了,大家可以给点意见啊. # coding=utf-8 import sys import csv im ...

  4. python爬虫爬取京东商品评价_python爬取京东商品信息及评论

    ''' 爬取京东商品信息: 功能: 通过chromeDrive进行模拟访问需要爬取的京东商品详情页(https://item.jd.com/100003196609.html)并且程序支持多个页面爬取 ...

  5. 利用python爬虫爬取京东商城商品图片

    笔者曾经用python第三方库requests来爬取京东商城的商品页内容,经过解析之后发现只爬到了商品页一半的图片.(这篇文章我们以爬取智能手机图片为例) 当鼠标没有向下滑时,此时查看源代码的话,就会 ...

  6. python 爬虫 爬取当当网图书信息

    初次系统的学习python,在学习完基本语法后,对爬虫进行学习,现在对当当网进行爬取,爬取了基本图书信息,包括图书名.作者等 import requests from time import slee ...

  7. python+正则表达式爬取京东商品数据信息

    爬取数据的方式有很多种,正则表达式,scrapy,从接口中爬取动态网页的数据-今天我们讲的是用正则表达式来爬取京东一个大米商品的具体信息. 正则表达式的优点:可以精准的爬取我们想要的数据信息 缺点:爬 ...

  8. Python爬虫爬取马蜂窝北京景点信息

    背景 来北京有些日子了,但是每个周末都窝在六环外的村里躺着.想想不能再这么浪费时间了,得出去玩!但是去哪玩呢?于是乎想着,先把北京的景点以及位置都保存起来,然后在分析分析做个出行计划.从哪里获取景点信 ...

  9. Python爬虫爬取知乎用户信息+寻找潜在客户

    [Python应用]寻找社交网络中的目标用户 日后的更新:由于是很久以前的课程设计项目,完整的源码已经不见了,关键的网页数据获取和解析的部分代码我在文章中已经贴出来了,但写的也不够好,如果想参考爬取知 ...

最新文章

  1. 看一名 KDE 开发者如何使用 C++17 为项目提升巨大速度
  2. Javascript 面向对象编程(一)
  3. AI人脸识别真的成熟了吗?读完这篇你就懂了
  4. 云时代下,移动云揭秘数据库“新解”
  5. 自拍抠图抠到手软?详解如何用深度学习消除背景
  6. Camshift算法原理及其Opencv实现
  7. python 正则表达式语法大全_Python正则表达式知识汇总
  8. 微信小程序开发总结与心得(二)
  9. matlab 中输入log就是ln吗?(ln就是log以e为底的对数)
  10. PXE网络启动 windows PE (使用微软官方工具)
  11. ME909 ECM拨号上网总结
  12. Vue elementui 实现表格selection的默认勾选
  13. 特征值比对代码/计算相似度代码
  14. 【数据库原理与应用MySQL版】实验指导
  15. NFM--FM的神经网络化尝试
  16. 微信小程序基础之input输入框控件
  17. 可视化神器Plotly绘制热力图
  18. 用友U8+ V16.0 V15.1 V15.0 V13.0 V12.5 12.1 12.0 11.1 11.0注册
  19. ERROR: Unable to find method 'com.android.build.gradle.api.BaseVariant.getOutputs()Ljava/util/List;'
  20. ARKit 又添新实例:iPhone 上看 Falcon 9 火箭回收

热门文章

  1. 黑鲨1 救黑砖 9008救砖
  2. 明星粉丝经济“叫好不叫座”?变现需找准“窍门儿”
  3. 在 LaTeX 中创建文档
  4. 查找2-n之间素数的个数
  5. Sigar获取系统信息
  6. redis安装(主从)
  7. C++ Reference: Standard C++ Library reference: C Library: cstdio: vsprintf
  8. 计算机毕业设计:基于微信小程序的校园求职系统
  9. JDK 19 新特性,劲爆!
  10. 2019零基础学Android第0课——零基础怎么学Android?