其他
我用Scrapy爬了各大城市的旅游数据后发现,最好玩的还是这里...
The following article is from GOGO数据 Author 是沐沐呀
文 |沐沐
来源:GOGO数据「ID: mu_science」
需求分析
页面分析
F12打开浏览器开发者模式,如下找到请求的url。
https://place.qyer.com/china/citylist-0-0-1/
https://place.qyer.com/china/citylist-0-0-2/
https://place.qyer.com/china/citylist-0-0-3/
https://place.qyer.com/china/citylist-0-0-4/
https://place.qyer.com/china/citylist-0-0-5/
发送请求
travel_city = scrapy.Field() #热门城市
travel_numb = scrapy.Field() # 旅游人数
travel_hot = scrapy.Field() # 热门景点
travel_url = scrapy.Field() # 城市详情页面地址
爬虫文件spider_travel,具体的爬虫方法的实现,前面提到过我们这里采用的是xpath来获取页面信息。
最后将获取到的信息抛给pipelines
# 实例化item对象
item = TravelSummerItem()
lis = response.xpath("//ul[@class='plcCitylist']/li")
for li in lis:
item['travel_city'] = li.xpath('./h3/a/text()').get() # 城市名称
item['travel_numb'] = li.xpath('./p[2]/text()').get() # 旅游人数
travel_hot = li.xpath('./p[@class = "pois"]/a/text()').getall() # 热门城市
travel_hot = [hot.strip() for hot in travel_hot]
item['travel_hot'] = '、'.join(travel_hot) # join()合并列表对象
travel_url = li.xpath('./h3/a/@href').get()
item['travel_url'] = 'https:' + travel_url # 城市详情页面地址
yield item
'''
香港 339046人去过 香港海洋公园、星光大道、维多利亚港、太平山、尖沙咀、金紫荆广场、香港迪士尼乐园、中环、弥敦道、兰桂坊、中银大厦、香港杜莎夫人蜡像馆、中环至半山自动扶梯、旺角、湾仔、黄大仙祠、铜锣湾、庙街、凌霄阁、重庆大厦 https://place.qyer.com/hong-kong/
澳门 200297人去过 澳门大三巴牌坊、大炮台、议事亭前地、玫瑰堂、官也街、妈阁庙、氹仔岛、澳门渔人码头、民政总署大楼、大三巴街、澳门博物馆、金莲花广场、岗顶前地、玛嘉烈蛋挞店、澳门旅游塔、龙环葡韵住宅式博物馆、东望洋炮台、圣若瑟修院及圣堂、黑沙海滩、妈祖像 https://place.qyer.com/macau/
台北 134250人去过 台北故宫博物院、台北101大楼、西门町、中正纪念堂、士林夜市、国父纪念馆、士林官邸、台北总统府、台北车站、阳明山国家公园、红楼创意市集、西门红楼、阿宗面线、猫空站、龙山寺、师大夜市、北投温泉博物馆、101觀景台、松山文创园区、饶河街观光夜市 https://place.qyer.com/taipei/
台湾 112519人去过 台北故宫博物院、台北101大楼、西门町、中正纪念堂、士林夜市、国父纪念馆、垦丁大街、鹅銮鼻公园、士林官邸、鹅銮鼻灯塔、九份老街、七星潭、台北总统府、船帆石、清水断崖、六合夜市、日月潭、高雄捷运美丽岛站(光之穹顶)、打狗英国领事馆、台湾最南点碑 https://place.qyer.com/taiwan/
北京 87876人去过 故宫、颐和园、圆明园、天安门广场、北京野生动物园、北京欢乐谷、恭王府、天坛、北京汽车博物馆、北海公园、北京动物园、中国科学技术馆、北京杜莎夫人蜡像馆、南锣鼓巷、景山公园、北京海洋馆、世界公园、香山公园、富国海底世界、雍和宫 https://place.qyer.com/beijing/
上海 84843人去过 东方明珠、上海野生动物园、上海海洋水族馆、上海科技馆、上海杜莎夫人蜡像馆、上海海昌海洋公园、豫园、上海长风海洋世界、上海动物园、城隍庙旅游区、顾村公园、上海自然博物馆、金茂大厦、银行博物馆、东方绿舟、上海汽车博物馆、中国航海博物馆、浦东开发陈列馆、上海海湾国家森林公园、新天地 https://place.qyer.com/shanghai/
成都 77823人去过 成都大熊猫繁育研究基地、宽窄巷子、武侯祠、杜甫草堂、金沙遗址博物馆、成都海昌极地海洋公园、成都欢乐谷、成都动物园、春熙路、蜀风雅韵川剧院、国色天乡童话世界、浩海立方海洋馆、文殊院、秀丽东方、青羊宫、松鼠部落森林假日公园、中国泰迪熊博物馆、漫花庄园、天府熊猫塔、四川博物院 https://place.qyer.com/chengdu/
广州 75927人去过 长隆野生动物世界、广州塔、长隆欢乐世界、珠江夜游、岭南印象园、沙面、宝墨园、正佳极地海洋世界、百万葵园、黄石公园、珠江夜游天字码头、中国科学院华南植物园、陈家祠、从化碧水湾温泉、珠江夜游广州塔码头、越秀公园、珠江夜游大沙头码头、上下九步行街、广州动物园、石室圣心大教堂 https://place.qyer.com/guangzhou/
南京 72126人去过 中山陵景区、牛首山文化旅游区、红山森林动物园、南京海底世界(尧泰汉海集团)、钟山风景名胜区、大报恩寺遗址公园、瞻园、秦淮河画舫、夫子庙秦淮河风光带、美龄宫、珍珠泉风景区、外秦淮河画舫、六朝博物馆、鸡鸣寺、江宁织造博物馆、圣保罗教堂、梅花山、雨花台、南京长江大桥、夫子庙大成殿 https://place.qyer.com/nanjing/
杭州 72067人去过 杭州灵隐(飞来峰)景区、灵隐寺、杭州动物园、西湖游船、岳王庙景区、胡雪岩故居、三潭印月、虎跑公园、杭州海底世界、清河坊街、京杭大运河、花港观鱼、白堤、南宋御街、云栖竹径、大喇叭、杭州云曼温泉、纪念公园、杭州植物园、钱塘江 https://place.qyer.com/hangzhou/
厦门 69089人去过 厦门大学、胡里山炮台、环岛路、曾厝垵、南普陀寺、厦门园林植物园、厦门科技馆、厦门方特梦幻王国、中山路步行街、鹭江夜游、钟鼓索道、帆汇帆船出海体验、灵玲马戏城、环岛观光巴士、云上厦门观光厅、观音山梦幻海岸、厦门方特东方神画、鼓浪屿、厦门园林博览苑、集美学村 https://place.qyer.com/xiamen/
深圳 66529人去过 世界之窗、东部华侨城、深圳欢乐谷、锦绣中华民俗文化村、深圳野生动物园、东部华侨城大侠谷、南澳、地王观光、东部华侨城茶溪谷、大梅沙海滨公园、青青世界、欢乐海岸海洋奇梦馆、鬼屋、观澜山水田园旅游文化园、光明农场大观园、小梅沙、天坛、深圳欢乐海岸、海上田园、西冲 https://place.qyer.com/shenzhen/
重庆 63837人去过 长江索道、解放碑步行街、重庆园博园、黑山谷风景区、重庆欢乐谷、梦幻奥陶纪景区、汉海海洋公园、重庆统景温泉风景区、酉阳桃花源、渣滓洞、云阳龙缸国家地质公园、融汇温泉城、四面山、丰都鬼城、白帝城景区、重庆动物园、金源方特科幻公园、朝天门广场、南山植物园、欢乐海底世界 https://place.qyer.com/chongqing/
三亚 62169人去过 蜈支洲岛、天涯海角、亚龙湾热带天堂森林公园、南山文化旅游区、亚龙湾、三亚千古情景区、阿浪海鲜第一市场、西岛、亚特兰蒂斯失落的空间水族馆、大东海、大小洞天、亚特兰蒂斯水世界、三亚湾、南山寺、海棠湾、凤凰岭海誓山盟景区、夜游三亚湾、亚龙湾海底世界、海底漫步、速降 https://place.qyer.com/sanya/
苏州 61164人去过 寒山寺、留园、山塘古街、华谊兄弟电影世界、苏州古运河、四季悦水游村、苏州博物馆、白马涧龙池景区、天池山、平江路历史街区、穹窿山、金鸡湖、诚品书店、观前街、苏州太湖国家湿地公园、苏州湾王焰温泉、沧浪亭、阳山温泉度假山庄、苏州上方山国家森林公园、金鸡湖游船 https://place.qyer.com/suzhou/
'''
https://www.mongodb.com/try/download/community
双击打开文件进行安装,在安装过程中,可以通过点击 "Custom(自定义)" 按钮来设置你的安装目录。
这里我选择安装在E:\MongoDB这个目录下(安装目录会影响我们后面的配置)。
这里选择直接next:
这里安装 "Install MongoDB Compass" 不勾选,
否则可能要很长时间都一直在执行安装,
MongoDB Compass是一个图形界面管理工具,这里不安装也是没有问题的,可以自己去下载一个图形界面管理工具,比如Robo3T。
之后稍微等待一会就安装好了。
http://127.0.0.1:27017/
然后到 settings 中写如下参数:
mongo_host = '127.0.0.1'
mongo_port = 27017
mongo_db_name = 'Travel'
mongo_db_collection = 'Travel_data'
def __init__(self):
host = mongo_host
port = mongo_port
dbname = mongo_db_name
collection = mongo_db_collection
client = pymongo.MongoClient(host=host, port = port)
db = client[dbname]
self.post = db[collection]
https://studio3t.com/
查看数据:
for page in range(1, 50 + 1):
url = f'https://place.qyer.com/china/citylist-0-0-{page}'
yield scrapy.Request(url, callback=self.parse)
往期精彩回顾