基本完成了对去哪儿网的门票信息的爬取。
首先通过选取城市的界面得到所有城市的ID,因为去哪儿网采用的ID直接是城市名称的汉字,但是如果直接输入城市,可能会和网站规定的名称不一致,所以提前进行了爬取,并把它保存在列表之中,使用的时候直接利用模糊搜索(fuzzywuzzy库)搜索出即可。
在爬取去哪儿网的过程中,遇到的最大问题就是如何根据景点来获取所有的门票信息,通过在网页的开发者模式下观察,我发现在加载景点详细页面的时候,有一个getTicket.json的一个json格式的页面被加载,而里面恰好就是所有门票的详细信息,而该页面的请求需要传入参数sightId。
所以问题就成了sightId该去哪找,去搜索结果浏览页面查询源代码,发现网页源代码中并没有该类信息,最后发现是在该页面的JavaScript代码之中,所以通过正则表达式re匹配:
f = re.search(re.compile('"sightId": "(.*)"'), html).group()
f = "{"+f+"}"
g = json.loads(f)
return g['sightId']
即可查询出,然后将其加在网页请求中,返回的就是门票的json信息了,剩下的工作就是从中抽取出我们所需要的东西并进行整合了。