之前发过一期携程酒店的爬取教程,好多粉丝反应说代码不用了,这里给大家统一回复一下。
问题一:携程代码无法只返回200,但没有数据,这是怎么回事?
这是因为cookies过期了,需要自行在浏览器中登录携程,然后f12获取cookies。
将浏览器中的cookies复制到代码中setting中如图位置。
代码就可以正常执行了。
问题二:想要爬取具体某个城市,怎么修改代码?
首先在以下这个网址获取自己城市的代号
https://hotels.ctrip.com/Domestic/Tool/AjaxGetCitySuggestion.aspx
如北京的代号就是1.
或者
在携程页面中目的地搜索想要的城市,然后在url中可以看到如下情况。
得到城市代号后,只要在源码中找到这个位置的代码。
修改代码:
Url_hotel='https://hotels.ctrip.com/Domestic/Tool/AjaxHotelList.aspx?city=1'
item = XiechengItem()
yield scrapy.Request(Url_hotel,
headers=self.settings['HEADERS'],
callback=self.parse_hotel,
meta={'item': item})
问题三:需要爬取房间数,怎么解决?
目前还没有好的办法破解携程的加密参数,需要可以参考在公众号中回复携程参数,来自行破解。
感谢大家支持,你们的支持是小编创作的动力。在这里只为将自己的知识与大家共享,欢迎大家给我们留言。
如果你有想要分享的知识,或者学习笔记,欢迎发给我们,无需排版。
让知识在这里共同分享,让需要的人少走弯路。
欢迎投稿
欢迎关注小试编程