├── .idea
├── inspectionProfiles
│ └── profiles_settings.xml
├── misc.xml
├── modules.xml
├── qunaer.iml
└── workspace.xml
├── README.md
├── images
├── Knowledge Graph.png
├── crawler.png
├── db_qunaer.png
└── db_qunaerTriples.png
├── qunaer.csv
├── qunaer
├── __init__.py
├── __pycache__
│ ├── __init__.cpython-36.pyc
│ ├── items.cpython-36.pyc
│ ├── pipelines.cpython-36.pyc
│ └── settings.cpython-36.pyc
├── items.py
├── middlewares.py
├── pipelines.py
├── settings.py
└── spiders
│ ├── __init__.py
│ ├── __pycache__
│ ├── __init__.cpython-36.pyc
│ └── qunaer.cpython-36.pyc
│ └── qunaer.py
├── run.py
└── scrapy.cfg
/.idea/inspectionProfiles/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/qunaer.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/workspace.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 | 1619081025310
97 |
98 |
99 | 1619081025310
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 | file://$PROJECT_DIR$/qunaer/spiders/qunaer.py
108 | 78
109 |
110 |
111 |
112 |
113 |
114 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # WEB知识图谱构建
2 |
3 | * 利用scrapy框架爬取去哪儿网热门景点信息
4 | * 抽取三元组信息(存入mongdb数据库)
5 | * 构建中文知识图谱(存入neo4j数据库)
6 |
7 | ## 环境构建
8 | * Windows 10(也可在ubuntu)
9 | * python 3.7
10 | * mongdb 安装可参考[此处](https://www.cnblogs.com/billyzh/p/5913687.html)
11 | * neo4j 安装可参考[此处](https://www.cnblogs.com/ljhdo/archive/2017/05/19/5521577.html)
12 | > 注意:在python环境中需要安装 neo4j-driver
13 |
14 | ## 快速开始
15 | 1. 启动mongo服务
16 |
17 | `$ net start MongDB`
18 | > 注意:需要管理员权限
19 |
20 | 2. 启动neo4j服务
21 |
22 | `$ neo4j start`
23 | > 注意:需要在neo4j的安装目录下运行命令
24 |
25 | 3. 连接Neo4j Browser
26 |
27 | * 浏览器上访问 http://localhost:7474/
28 | * 用户名和密码与代码中一致 `auth=("neo4j", "123")`
29 |
30 | 4. 运行run.py
31 |
32 | `$ cd WEB_qunaer/qunaer/spiders`
33 |
34 | `$ python run.py`
35 |
36 | ## 运行效果
37 | * **爬虫运行界面**
38 | 
39 | * **mongdb存储去哪儿信息**
40 | 
41 | * **mongdb存储三元组信息**
42 | 
43 | * **知识图谱结果**
44 | 
45 |
46 |
47 |
48 | 最后感谢[WEB_KG](https://github.com/lixiang0/WEB_KG)!
49 |
50 |
51 |
52 |
53 |
--------------------------------------------------------------------------------
/images/Knowledge Graph.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xxrz/WEB_qunaer/c966eded67f5f627aac4a85c1a9feccb9e4352d9/images/Knowledge Graph.png
--------------------------------------------------------------------------------
/images/crawler.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xxrz/WEB_qunaer/c966eded67f5f627aac4a85c1a9feccb9e4352d9/images/crawler.png
--------------------------------------------------------------------------------
/images/db_qunaer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xxrz/WEB_qunaer/c966eded67f5f627aac4a85c1a9feccb9e4352d9/images/db_qunaer.png
--------------------------------------------------------------------------------
/images/db_qunaerTriples.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xxrz/WEB_qunaer/c966eded67f5f627aac4a85c1a9feccb9e4352d9/images/db_qunaerTriples.png
--------------------------------------------------------------------------------
/qunaer.csv:
--------------------------------------------------------------------------------
1 | address,area,hot_num,intro,level,price,province,string,title
2 | 江苏省扬州市维扬区长春路118号,江苏·扬州·邗江区,6845,湖上园林的典型代表,5A景区,93,江苏,1.0,瘦西湖
3 | 陕西省渭南市华阴市境内,陕西·渭南·华阴市,6488,只有天在上,更无山与齐,5A景区,160,陕西,1.0,华山景区
4 | 河南省洛阳市栾川县城东,河南·洛阳·栾川县,6080,山势雄伟,美不胜收,5A景区,86.9,河南,0.72,老君山景区
5 | 海南省三亚市崖城镇南山村,海南·三亚·崖州区,5287,108米的海上三面观音,三亚不容错过之旅,5A景区,122,海南,0.76,南山文化旅游区
6 | 江苏省南京市江宁区宁丹大道18号,江苏·南京·江宁区,4805,佛教牛头禅的发祥地,4A景区,85.2,江苏,0.0,牛首山文化旅游区
7 | 安徽省黄山市黄山区黄山风景区,安徽·黄山·黄山区,4389,五岳归来不看山,黄山归来不看岳,5A景区,190,安徽,1.0,黄山风景区
8 | 海南省三亚市林旺镇海棠湾蜈支洲岛,海南·三亚·海棠区,4361,私人订制主取景地,5A景区,133,海南,0.86,蜈支洲岛
9 | 山东省济南市历下区经十一路18号,山东·济南·历下区,4132,遥望齐州九点烟,一泓海水杯中泻,4A景区,15,山东,0.86,千佛山
10 | 浙江省舟山市普陀区,浙江·舟山·普陀区,4121,人间清净地 | 朝圣看日出,5A景区,160,浙江,1.0,普陀山风景区
11 | 四川省乐山峨眉山市峨眉山风景名胜区,四川·乐山·峨眉山市,4112,云上金顶,天下峨眉,5A景区,160,四川,1.0,峨眉山
12 | 江苏省南京市玄武区和燕路168号,江苏·南京·玄武区,4040,惊险有趣的大型斗兽表演,,37,江苏,0.0,红山森林动物园
13 | 四川省成都市都江堰市青城山路,四川·成都·都江堰市,3834,青城山下白素贞,洞中千年修此身,5A景区,78,四川,0.96,青城山
14 | 四川省阿坝藏族羌族自治州九寨沟县漳扎镇九寨沟,四川·阿坝藏族羌族自治州·九寨沟县,3598,传说中的童话天堂,你还在犹豫么,5A景区,259,四川,1.0,九寨沟
15 | 福建省厦门市思明区鼓浪屿,福建·厦门·思明区,3560,琴之岛,乐之屿,5A景区,37.5,福建,0.9800000000000001,鼓浪屿
16 | 江苏省无锡市滨湖区灵山路1号,江苏·无锡·灵山胜境,3489,观释迦牟尼佛青铜立像,赏佛教胜景,5A景区,165,江苏,1.0,灵山大佛
17 | 湖北省宜昌市镇平路39号,湖北·宜昌,120,万里长江映彩霞,高山峡谷千秋坝,,65,湖北,0.0,葛洲坝船闸景区
18 | 广东省茂名高州市深镇境内,广东·茂名·高州市,118,有杜鹃林、千亩竹海、原始森林和天然瀑布群,,49,广东,0.72,高州仙人洞风景区
19 | 江西省赣州市龙南县武当镇,江西·赣州·龙南县,118,素有江西南大门之称。,4A景区,69,江西,0.0,南武当景区
20 | 湖北省武汉市洪山区磨山景区内。,湖北·武汉·武汉东湖风景区,116,千年灵秀地,武侠传奇城,5A景区,30,湖北,0.72,武汉东湖磨山
21 | 湖南省张家界市,湖南·张家界,116,湘鄂渝黔革命根据地的发源地和中心区域,,268,湖南,0.0,张家界
22 | 四川省广元市朝天区明月峡景区,四川·广元·朝天区,116,中国道路交通博物馆,道路交通发展活化石,4A景区,60.5,四川,0.0,明月峡
23 | 山东省烟台蓬莱市海滨路东8号,山东·烟台·蓬莱市,116,放漂心灵,体验澎湃激情,尽享探险之乐,5A景区,69,山东,0.72,八仙过海景区
24 | 山东省日照市五莲县文化路东首,山东·日照·五莲县,116,"山群削峻,高耸入云",,58,山东,0.78,日照九仙山
25 | 浙江省舟山市普陀山东南部的梅檀岭下,浙江·舟山·普陀区,116,普陀山重要的景点之一,处处都是景,,188,浙江,0.78,紫竹林
26 | 云南省丽江市宁蒗彝族自治县环湖公路,云南·丽江·宁蒗县,114,人间爱情的见证,,70,云南,0.0,情人树
27 | 浙江省嘉兴市南湖区海盐塘路188号(近南溪西路),浙江·嘉兴·南湖区,114,江南三大名湖之一,中共一大召开地,5A景区,20,浙江,0.72,嘉兴南湖景区
28 | 广西壮族自治区桂林市阳朔县321国道,广西·桂林·阳朔县,114,原始吊桥,可鸟瞰遇龙河,4A景区,35.7,广西,0.74,阳朔天籁蝴蝶泉
29 | 安徽省宣城市北郊,安徽·宣城,114,千古诗歌之山,4A景区,45,安徽,0.78,敬亭山
30 | 江苏省常州市溧阳市环湖东路1号(天目湖宾馆对面),江苏·常州·天目湖,114,充满着浓郁的乡村田园气息的乡村田园岛,5A景区,59,江苏,0.0,天目湖山水园
31 | 长治市壶关县桥上乡,山西·长治·上党区,112,因形貌营造了冬暖夏凉,清新润适的小气候,5A景区,165,山西,0.7,壶关太行八泉峡
32 | 山东省济南市长清区万德镇马套村,山东·济南·长清区,96,群山掩映,佛光庇佑,人杰地灵。,,22.4,山东,0.0,济南马套将军山旅游度假区
33 | 四川省遂宁市大英县中海大道888号,四川·遂宁·大英县,94,恒温海域随你四季畅游,4A景区,99,四川,0.9199999999999999,中国死海
34 | 广西省桂林市阳朔县南桂荔公路,广西·桂林·阳朔县,94,可兼水陆游览的溶洞,4A景区,55,广西,0.72,阳朔聚龙潭
35 | 陕西省延安市延川县,陕西·延安·延川县,94,一幅天然太极图,,71.5,陕西,0.0,乾坤湾
36 | 湖北省宜昌市夷陵区三斗坪镇,湖北·宜昌·夷陵区,94,高峡出平湖,5A景区,85,湖北,1.0,三峡大坝旅游区
37 | 山东省临沂市沂水县院东头乡四门洞,山东·临沂·萤火虫水洞·地下大峡谷旅游区,94,著名的地下萤火虫水洞神秘世界,4A景区,95,山东,0.86,萤火虫水洞
38 | 甘肃省平凉市崆峒区城西12公里处,甘肃·平凉·崆峒区,94,崆峒派驻地,小心七伤拳,5A景区,87,甘肃,1.0,崆峒山
39 | 河南省登封市,河南·郑州·登封市,92,以山岳自然风光为主的景区,,1.4,河南,0.76,三皇寨
40 | 四川省阿坝藏族羌族自治州,四川·阿坝藏族羌族自治州·茂县,92,冬长无夏、春秋相连,4A景区,39,四川,0.7,叠溪松坪沟风景区
41 | 广东省深圳市龙岗区,广东·深圳·西冲沙滩,92,感受无敌海景,体验野外生活的度假方式,,55,广东,0.0,西冲海滨旅游度假区
42 | 浙江省杭州市淳安县千岛湖镇淡竹王子山森林氧吧景区,浙江·杭州·千岛湖,92,远离雾霭,洗洗肺,静静心,,40,浙江,0.7,千岛湖森林氧吧
43 | 江苏省盐城市盐都区大纵湖景区,江苏·盐城·盐都区,92,"闯芦荡迷宫,观万千候鸟",4A景区,53,江苏,0.78,大纵湖
44 | 浙江省杭州临安市西天目乡,浙江·杭州·临安市,90,清肺森林浴 | 空气清新负氧离子爆表,4A景区,105,浙江,0.74,天目山
45 | 湖南省长沙市长沙县跳马乡石门村石燕湖,湖南·长沙·长沙县,90,湖南九寨人间瑶池,4A景区,149.5,湖南,0.74,石燕湖
46 | 安徽省黄山市休宁县齐云山镇岩前街018号,安徽·黄山·休宁县,90,丹霞地貌、摩崖石刻、山水田园,4A景区,34,安徽,0.72,齐云山景区
47 | 山东省济南市长清区万德镇马套村,山东·济南·长清区,96,群山掩映,佛光庇佑,人杰地灵。,,22.4,山东,0.0,济南马套将军山旅游度假区
48 | 四川省遂宁市大英县中海大道888号,四川·遂宁·大英县,94,恒温海域随你四季畅游,4A景区,99,四川,0.9199999999999999,中国死海
49 | 广西省桂林市阳朔县南桂荔公路,广西·桂林·阳朔县,94,可兼水陆游览的溶洞,4A景区,55,广西,0.72,阳朔聚龙潭
50 | 山东省临沂市沂水县院东头乡四门洞,山东·临沂·萤火虫水洞·地下大峡谷旅游区,94,著名的地下萤火虫水洞神秘世界,4A景区,95,山东,0.86,萤火虫水洞
51 | 湖北省宜昌市夷陵区三斗坪镇,湖北·宜昌·夷陵区,94,高峡出平湖,5A景区,85,湖北,1.0,三峡大坝旅游区
52 | 陕西省延安市延川县,陕西·延安·延川县,94,一幅天然太极图,,71.5,陕西,0.0,乾坤湾
53 | 甘肃省平凉市崆峒区城西12公里处,甘肃·平凉·崆峒区,94,崆峒派驻地,小心七伤拳,5A景区,87,甘肃,1.0,崆峒山
54 | 河南省登封市,河南·郑州·登封市,92,以山岳自然风光为主的景区,,1.4,河南,0.76,三皇寨
55 | 四川省阿坝藏族羌族自治州,四川·阿坝藏族羌族自治州·茂县,92,冬长无夏、春秋相连,4A景区,39,四川,0.7,叠溪松坪沟风景区
56 | 广东省深圳市龙岗区,广东·深圳·西冲沙滩,92,感受无敌海景,体验野外生活的度假方式,,55,广东,0.0,西冲海滨旅游度假区
57 | 浙江省杭州市淳安县千岛湖镇淡竹王子山森林氧吧景区,浙江·杭州·千岛湖,92,远离雾霭,洗洗肺,静静心,,40,浙江,0.7,千岛湖森林氧吧
58 | 江苏省盐城市盐都区大纵湖景区,江苏·盐城·盐都区,92,"闯芦荡迷宫,观万千候鸟",4A景区,53,江苏,0.78,大纵湖
59 | 浙江省杭州临安市西天目乡,浙江·杭州·临安市,90,清肺森林浴 | 空气清新负氧离子爆表,4A景区,105,浙江,0.74,天目山
60 | 湖南省长沙市长沙县跳马乡石门村石燕湖,湖南·长沙·长沙县,90,湖南九寨人间瑶池,4A景区,149.5,湖南,0.74,石燕湖
61 | 安徽省黄山市休宁县齐云山镇岩前街018号,安徽·黄山·休宁县,90,丹霞地貌、摩崖石刻、山水田园,4A景区,34,安徽,0.72,齐云山景区
62 | 山东省济南市长清区万德镇马套村,山东·济南·长清区,96,群山掩映,佛光庇佑,人杰地灵。,,22.4,山东,0.0,济南马套将军山旅游度假区
63 | 四川省遂宁市大英县中海大道888号,四川·遂宁·大英县,94,恒温海域随你四季畅游,4A景区,99,四川,0.9199999999999999,中国死海
64 | 广西省桂林市阳朔县南桂荔公路,广西·桂林·阳朔县,94,可兼水陆游览的溶洞,4A景区,55,广西,0.72,阳朔聚龙潭
65 | 山东省临沂市沂水县院东头乡四门洞,山东·临沂·萤火虫水洞·地下大峡谷旅游区,94,著名的地下萤火虫水洞神秘世界,4A景区,95,山东,0.86,萤火虫水洞
66 | 湖北省宜昌市夷陵区三斗坪镇,湖北·宜昌·夷陵区,94,高峡出平湖,5A景区,85,湖北,1.0,三峡大坝旅游区
67 | 陕西省延安市延川县,陕西·延安·延川县,94,一幅天然太极图,,71.5,陕西,0.0,乾坤湾
68 | 甘肃省平凉市崆峒区城西12公里处,甘肃·平凉·崆峒区,94,崆峒派驻地,小心七伤拳,5A景区,87,甘肃,1.0,崆峒山
69 | 河南省登封市,河南·郑州·登封市,92,以山岳自然风光为主的景区,,1.4,河南,0.76,三皇寨
70 | 四川省阿坝藏族羌族自治州,四川·阿坝藏族羌族自治州·茂县,92,冬长无夏、春秋相连,4A景区,39,四川,0.7,叠溪松坪沟风景区
71 | 广东省深圳市龙岗区,广东·深圳·西冲沙滩,92,感受无敌海景,体验野外生活的度假方式,,55,广东,0.0,西冲海滨旅游度假区
72 | 浙江省杭州市淳安县千岛湖镇淡竹王子山森林氧吧景区,浙江·杭州·千岛湖,92,远离雾霭,洗洗肺,静静心,,40,浙江,0.7,千岛湖森林氧吧
73 | 江苏省盐城市盐都区大纵湖景区,江苏·盐城·盐都区,92,"闯芦荡迷宫,观万千候鸟",4A景区,53,江苏,0.78,大纵湖
74 | 浙江省杭州临安市西天目乡,浙江·杭州·临安市,90,清肺森林浴 | 空气清新负氧离子爆表,4A景区,105,浙江,0.74,天目山
75 | 湖南省长沙市长沙县跳马乡石门村石燕湖,湖南·长沙·长沙县,90,湖南九寨人间瑶池,4A景区,149.5,湖南,0.74,石燕湖
76 | 安徽省黄山市休宁县齐云山镇岩前街018号,安徽·黄山·休宁县,90,丹霞地貌、摩崖石刻、山水田园,4A景区,34,安徽,0.72,齐云山景区
77 | 山东省济南市长清区万德镇马套村,山东·济南·长清区,96,群山掩映,佛光庇佑,人杰地灵。,,22.4,山东,0.0,济南马套将军山旅游度假区
78 | 四川省遂宁市大英县中海大道888号,四川·遂宁·大英县,94,恒温海域随你四季畅游,4A景区,99,四川,0.9199999999999999,中国死海
79 | 广西省桂林市阳朔县南桂荔公路,广西·桂林·阳朔县,94,可兼水陆游览的溶洞,4A景区,55,广西,0.72,阳朔聚龙潭
80 | 陕西省延安市延川县,陕西·延安·延川县,94,一幅天然太极图,,71.5,陕西,0.0,乾坤湾
81 | 湖北省宜昌市夷陵区三斗坪镇,湖北·宜昌·夷陵区,94,高峡出平湖,5A景区,85,湖北,1.0,三峡大坝旅游区
82 | 山东省临沂市沂水县院东头乡四门洞,山东·临沂·萤火虫水洞·地下大峡谷旅游区,94,著名的地下萤火虫水洞神秘世界,4A景区,95,山东,0.86,萤火虫水洞
83 | 甘肃省平凉市崆峒区城西12公里处,甘肃·平凉·崆峒区,94,崆峒派驻地,小心七伤拳,5A景区,87,甘肃,1.0,崆峒山
84 | 河南省登封市,河南·郑州·登封市,92,以山岳自然风光为主的景区,,1.4,河南,0.76,三皇寨
85 | 四川省阿坝藏族羌族自治州,四川·阿坝藏族羌族自治州·茂县,92,冬长无夏、春秋相连,4A景区,39,四川,0.7,叠溪松坪沟风景区
86 | 广东省深圳市龙岗区,广东·深圳·西冲沙滩,92,感受无敌海景,体验野外生活的度假方式,,55,广东,0.0,西冲海滨旅游度假区
87 | 浙江省杭州市淳安县千岛湖镇淡竹王子山森林氧吧景区,浙江·杭州·千岛湖,92,远离雾霭,洗洗肺,静静心,,40,浙江,0.7,千岛湖森林氧吧
88 | 江苏省盐城市盐都区大纵湖景区,江苏·盐城·盐都区,92,"闯芦荡迷宫,观万千候鸟",4A景区,53,江苏,0.78,大纵湖
89 | 浙江省杭州临安市西天目乡,浙江·杭州·临安市,90,清肺森林浴 | 空气清新负氧离子爆表,4A景区,105,浙江,0.74,天目山
90 | 湖南省长沙市长沙县跳马乡石门村石燕湖,湖南·长沙·长沙县,90,湖南九寨人间瑶池,4A景区,149.5,湖南,0.74,石燕湖
91 | 安徽省黄山市休宁县齐云山镇岩前街018号,安徽·黄山·休宁县,90,丹霞地貌、摩崖石刻、山水田园,4A景区,34,安徽,0.72,齐云山景区
92 | 山东省济南市长清区万德镇马套村,山东·济南·长清区,96,群山掩映,佛光庇佑,人杰地灵。,,22.4,山东,0.0,济南马套将军山旅游度假区
93 | 四川省遂宁市大英县中海大道888号,四川·遂宁·大英县,94,恒温海域随你四季畅游,4A景区,99,四川,0.9199999999999999,中国死海
94 | 广西省桂林市阳朔县南桂荔公路,广西·桂林·阳朔县,94,可兼水陆游览的溶洞,4A景区,55,广西,0.72,阳朔聚龙潭
95 | 陕西省延安市延川县,陕西·延安·延川县,94,一幅天然太极图,,71.5,陕西,0.0,乾坤湾
96 | 湖北省宜昌市夷陵区三斗坪镇,湖北·宜昌·夷陵区,94,高峡出平湖,5A景区,85,湖北,1.0,三峡大坝旅游区
97 | 山东省临沂市沂水县院东头乡四门洞,山东·临沂·萤火虫水洞·地下大峡谷旅游区,94,著名的地下萤火虫水洞神秘世界,4A景区,95,山东,0.86,萤火虫水洞
98 | 甘肃省平凉市崆峒区城西12公里处,甘肃·平凉·崆峒区,94,崆峒派驻地,小心七伤拳,5A景区,87,甘肃,1.0,崆峒山
99 | 河南省登封市,河南·郑州·登封市,92,以山岳自然风光为主的景区,,1.4,河南,0.76,三皇寨
100 | 四川省阿坝藏族羌族自治州,四川·阿坝藏族羌族自治州·茂县,92,冬长无夏、春秋相连,4A景区,39,四川,0.7,叠溪松坪沟风景区
101 | 广东省深圳市龙岗区,广东·深圳·西冲沙滩,92,感受无敌海景,体验野外生活的度假方式,,55,广东,0.0,西冲海滨旅游度假区
102 | 浙江省杭州市淳安县千岛湖镇淡竹王子山森林氧吧景区,浙江·杭州·千岛湖,92,远离雾霭,洗洗肺,静静心,,40,浙江,0.7,千岛湖森林氧吧
103 | 江苏省盐城市盐都区大纵湖景区,江苏·盐城·盐都区,92,"闯芦荡迷宫,观万千候鸟",4A景区,53,江苏,0.78,大纵湖
104 | 浙江省杭州临安市西天目乡,浙江·杭州·临安市,90,清肺森林浴 | 空气清新负氧离子爆表,4A景区,105,浙江,0.74,天目山
105 | 湖南省长沙市长沙县跳马乡石门村石燕湖,湖南·长沙·长沙县,90,湖南九寨人间瑶池,4A景区,149.5,湖南,0.74,石燕湖
106 | 安徽省黄山市休宁县齐云山镇岩前街018号,安徽·黄山·休宁县,90,丹霞地貌、摩崖石刻、山水田园,4A景区,34,安徽,0.72,齐云山景区
107 | 山东省济南市长清区万德镇马套村,山东·济南·长清区,96,群山掩映,佛光庇佑,人杰地灵。,,22.4,山东,0.0,济南马套将军山旅游度假区
108 | 四川省遂宁市大英县中海大道888号,四川·遂宁·大英县,94,恒温海域随你四季畅游,4A景区,99,四川,0.9199999999999999,中国死海
109 | 广西省桂林市阳朔县南桂荔公路,广西·桂林·阳朔县,94,可兼水陆游览的溶洞,4A景区,55,广西,0.72,阳朔聚龙潭
110 | 陕西省延安市延川县,陕西·延安·延川县,94,一幅天然太极图,,71.5,陕西,0.0,乾坤湾
111 | 湖北省宜昌市夷陵区三斗坪镇,湖北·宜昌·夷陵区,94,高峡出平湖,5A景区,85,湖北,1.0,三峡大坝旅游区
112 | 山东省临沂市沂水县院东头乡四门洞,山东·临沂·萤火虫水洞·地下大峡谷旅游区,94,著名的地下萤火虫水洞神秘世界,4A景区,95,山东,0.86,萤火虫水洞
113 | 甘肃省平凉市崆峒区城西12公里处,甘肃·平凉·崆峒区,94,崆峒派驻地,小心七伤拳,5A景区,87,甘肃,1.0,崆峒山
114 | 河南省登封市,河南·郑州·登封市,92,以山岳自然风光为主的景区,,1.4,河南,0.76,三皇寨
115 | 四川省阿坝藏族羌族自治州,四川·阿坝藏族羌族自治州·茂县,92,冬长无夏、春秋相连,4A景区,39,四川,0.7,叠溪松坪沟风景区
116 | 广东省深圳市龙岗区,广东·深圳·西冲沙滩,92,感受无敌海景,体验野外生活的度假方式,,55,广东,0.0,西冲海滨旅游度假区
117 | 浙江省杭州市淳安县千岛湖镇淡竹王子山森林氧吧景区,浙江·杭州·千岛湖,92,远离雾霭,洗洗肺,静静心,,40,浙江,0.7,千岛湖森林氧吧
118 | 江苏省盐城市盐都区大纵湖景区,江苏·盐城·盐都区,92,"闯芦荡迷宫,观万千候鸟",4A景区,53,江苏,0.78,大纵湖
119 | 浙江省杭州临安市西天目乡,浙江·杭州·临安市,90,清肺森林浴 | 空气清新负氧离子爆表,4A景区,105,浙江,0.74,天目山
120 | 湖南省长沙市长沙县跳马乡石门村石燕湖,湖南·长沙·长沙县,90,湖南九寨人间瑶池,4A景区,149.5,湖南,0.74,石燕湖
121 | 安徽省黄山市休宁县齐云山镇岩前街018号,安徽·黄山·休宁县,90,丹霞地貌、摩崖石刻、山水田园,4A景区,34,安徽,0.72,齐云山景区
122 | 山东省济南市长清区万德镇马套村,山东·济南·长清区,96,群山掩映,佛光庇佑,人杰地灵。,,22.4,山东,0.0,济南马套将军山旅游度假区
123 | 四川省遂宁市大英县中海大道888号,四川·遂宁·大英县,94,恒温海域随你四季畅游,4A景区,99,四川,0.9199999999999999,中国死海
124 | 广西省桂林市阳朔县南桂荔公路,广西·桂林·阳朔县,94,可兼水陆游览的溶洞,4A景区,55,广西,0.72,阳朔聚龙潭
125 | 陕西省延安市延川县,陕西·延安·延川县,94,一幅天然太极图,,71.5,陕西,0.0,乾坤湾
126 | 湖北省宜昌市夷陵区三斗坪镇,湖北·宜昌·夷陵区,94,高峡出平湖,5A景区,85,湖北,1.0,三峡大坝旅游区
127 | 山东省临沂市沂水县院东头乡四门洞,山东·临沂·萤火虫水洞·地下大峡谷旅游区,94,著名的地下萤火虫水洞神秘世界,4A景区,95,山东,0.86,萤火虫水洞
128 | 甘肃省平凉市崆峒区城西12公里处,甘肃·平凉·崆峒区,94,崆峒派驻地,小心七伤拳,5A景区,87,甘肃,1.0,崆峒山
129 | 河南省登封市,河南·郑州·登封市,92,以山岳自然风光为主的景区,,1.4,河南,0.76,三皇寨
130 | 四川省阿坝藏族羌族自治州,四川·阿坝藏族羌族自治州·茂县,92,冬长无夏、春秋相连,4A景区,39,四川,0.7,叠溪松坪沟风景区
131 | 广东省深圳市龙岗区,广东·深圳·西冲沙滩,92,感受无敌海景,体验野外生活的度假方式,,55,广东,0.0,西冲海滨旅游度假区
132 | 浙江省杭州市淳安县千岛湖镇淡竹王子山森林氧吧景区,浙江·杭州·千岛湖,92,远离雾霭,洗洗肺,静静心,,40,浙江,0.7,千岛湖森林氧吧
133 | 江苏省盐城市盐都区大纵湖景区,江苏·盐城·盐都区,92,"闯芦荡迷宫,观万千候鸟",4A景区,53,江苏,0.78,大纵湖
134 | 浙江省杭州临安市西天目乡,浙江·杭州·临安市,90,清肺森林浴 | 空气清新负氧离子爆表,4A景区,105,浙江,0.74,天目山
135 | 湖南省长沙市长沙县跳马乡石门村石燕湖,湖南·长沙·长沙县,90,湖南九寨人间瑶池,4A景区,149.5,湖南,0.74,石燕湖
136 | 安徽省黄山市休宁县齐云山镇岩前街018号,安徽·黄山·休宁县,90,丹霞地貌、摩崖石刻、山水田园,4A景区,34,安徽,0.72,齐云山景区
137 | 山东省济南市长清区万德镇马套村,山东·济南·长清区,96,群山掩映,佛光庇佑,人杰地灵。,,22.4,山东,0.0,济南马套将军山旅游度假区
138 | 四川省遂宁市大英县中海大道888号,四川·遂宁·大英县,94,恒温海域随你四季畅游,4A景区,99,四川,0.9199999999999999,中国死海
139 | 广西省桂林市阳朔县南桂荔公路,广西·桂林·阳朔县,94,可兼水陆游览的溶洞,4A景区,55,广西,0.72,阳朔聚龙潭
140 | 陕西省延安市延川县,陕西·延安·延川县,94,一幅天然太极图,,71.5,陕西,0.0,乾坤湾
141 | 湖北省宜昌市夷陵区三斗坪镇,湖北·宜昌·夷陵区,94,高峡出平湖,5A景区,85,湖北,1.0,三峡大坝旅游区
142 | 山东省临沂市沂水县院东头乡四门洞,山东·临沂·萤火虫水洞·地下大峡谷旅游区,94,著名的地下萤火虫水洞神秘世界,4A景区,95,山东,0.86,萤火虫水洞
143 | 甘肃省平凉市崆峒区城西12公里处,甘肃·平凉·崆峒区,94,崆峒派驻地,小心七伤拳,5A景区,87,甘肃,1.0,崆峒山
144 | 河南省登封市,河南·郑州·登封市,92,以山岳自然风光为主的景区,,1.4,河南,0.76,三皇寨
145 | 四川省阿坝藏族羌族自治州,四川·阿坝藏族羌族自治州·茂县,92,冬长无夏、春秋相连,4A景区,39,四川,0.7,叠溪松坪沟风景区
146 | 广东省深圳市龙岗区,广东·深圳·西冲沙滩,92,感受无敌海景,体验野外生活的度假方式,,55,广东,0.0,西冲海滨旅游度假区
147 | 浙江省杭州市淳安县千岛湖镇淡竹王子山森林氧吧景区,浙江·杭州·千岛湖,92,远离雾霭,洗洗肺,静静心,,40,浙江,0.7,千岛湖森林氧吧
148 | 江苏省盐城市盐都区大纵湖景区,江苏·盐城·盐都区,92,"闯芦荡迷宫,观万千候鸟",4A景区,53,江苏,0.78,大纵湖
149 | 浙江省杭州临安市西天目乡,浙江·杭州·临安市,90,清肺森林浴 | 空气清新负氧离子爆表,4A景区,105,浙江,0.74,天目山
150 | 湖南省长沙市长沙县跳马乡石门村石燕湖,湖南·长沙·长沙县,90,湖南九寨人间瑶池,4A景区,149.5,湖南,0.74,石燕湖
151 | 安徽省黄山市休宁县齐云山镇岩前街018号,安徽·黄山·休宁县,90,丹霞地貌、摩崖石刻、山水田园,4A景区,34,安徽,0.72,齐云山景区
152 | 山东省济南市长清区万德镇马套村,山东·济南·长清区,96,群山掩映,佛光庇佑,人杰地灵。,,22.4,山东,0.0,济南马套将军山旅游度假区
153 | 四川省遂宁市大英县中海大道888号,四川·遂宁·大英县,94,恒温海域随你四季畅游,4A景区,99,四川,0.9199999999999999,中国死海
154 | 广西省桂林市阳朔县南桂荔公路,广西·桂林·阳朔县,94,可兼水陆游览的溶洞,4A景区,55,广西,0.72,阳朔聚龙潭
155 | 山东省临沂市沂水县院东头乡四门洞,山东·临沂·萤火虫水洞·地下大峡谷旅游区,94,著名的地下萤火虫水洞神秘世界,4A景区,95,山东,0.86,萤火虫水洞
156 | 湖北省宜昌市夷陵区三斗坪镇,湖北·宜昌·夷陵区,94,高峡出平湖,5A景区,85,湖北,1.0,三峡大坝旅游区
157 | 陕西省延安市延川县,陕西·延安·延川县,94,一幅天然太极图,,71.5,陕西,0.0,乾坤湾
158 | 甘肃省平凉市崆峒区城西12公里处,甘肃·平凉·崆峒区,94,崆峒派驻地,小心七伤拳,5A景区,87,甘肃,1.0,崆峒山
159 | 河南省登封市,河南·郑州·登封市,92,以山岳自然风光为主的景区,,1.4,河南,0.76,三皇寨
160 | 四川省阿坝藏族羌族自治州,四川·阿坝藏族羌族自治州·茂县,92,冬长无夏、春秋相连,4A景区,39,四川,0.7,叠溪松坪沟风景区
161 | 广东省深圳市龙岗区,广东·深圳·西冲沙滩,92,感受无敌海景,体验野外生活的度假方式,,55,广东,0.0,西冲海滨旅游度假区
162 | 浙江省杭州市淳安县千岛湖镇淡竹王子山森林氧吧景区,浙江·杭州·千岛湖,92,远离雾霭,洗洗肺,静静心,,40,浙江,0.7,千岛湖森林氧吧
163 | 江苏省盐城市盐都区大纵湖景区,江苏·盐城·盐都区,92,"闯芦荡迷宫,观万千候鸟",4A景区,53,江苏,0.78,大纵湖
164 | 浙江省杭州临安市西天目乡,浙江·杭州·临安市,90,清肺森林浴 | 空气清新负氧离子爆表,4A景区,105,浙江,0.74,天目山
165 | 湖南省长沙市长沙县跳马乡石门村石燕湖,湖南·长沙·长沙县,90,湖南九寨人间瑶池,4A景区,149.5,湖南,0.74,石燕湖
166 | 安徽省黄山市休宁县齐云山镇岩前街018号,安徽·黄山·休宁县,90,丹霞地貌、摩崖石刻、山水田园,4A景区,34,安徽,0.72,齐云山景区
167 | 山东省济南市长清区万德镇马套村,山东·济南·长清区,96,群山掩映,佛光庇佑,人杰地灵。,,22.4,山东,0.0,济南马套将军山旅游度假区
168 | 四川省遂宁市大英县中海大道888号,四川·遂宁·大英县,94,恒温海域随你四季畅游,4A景区,99,四川,0.9199999999999999,中国死海
169 | 广西省桂林市阳朔县南桂荔公路,广西·桂林·阳朔县,94,可兼水陆游览的溶洞,4A景区,55,广西,0.72,阳朔聚龙潭
170 | 山东省临沂市沂水县院东头乡四门洞,山东·临沂·萤火虫水洞·地下大峡谷旅游区,94,著名的地下萤火虫水洞神秘世界,4A景区,95,山东,0.86,萤火虫水洞
171 | 湖北省宜昌市夷陵区三斗坪镇,湖北·宜昌·夷陵区,94,高峡出平湖,5A景区,85,湖北,1.0,三峡大坝旅游区
172 | 陕西省延安市延川县,陕西·延安·延川县,94,一幅天然太极图,,71.5,陕西,0.0,乾坤湾
173 | 甘肃省平凉市崆峒区城西12公里处,甘肃·平凉·崆峒区,94,崆峒派驻地,小心七伤拳,5A景区,87,甘肃,1.0,崆峒山
174 | 河南省登封市,河南·郑州·登封市,92,以山岳自然风光为主的景区,,1.4,河南,0.76,三皇寨
175 | 四川省阿坝藏族羌族自治州,四川·阿坝藏族羌族自治州·茂县,92,冬长无夏、春秋相连,4A景区,39,四川,0.7,叠溪松坪沟风景区
176 | 广东省深圳市龙岗区,广东·深圳·西冲沙滩,92,感受无敌海景,体验野外生活的度假方式,,55,广东,0.0,西冲海滨旅游度假区
177 | 浙江省杭州市淳安县千岛湖镇淡竹王子山森林氧吧景区,浙江·杭州·千岛湖,92,远离雾霭,洗洗肺,静静心,,40,浙江,0.7,千岛湖森林氧吧
178 | 江苏省盐城市盐都区大纵湖景区,江苏·盐城·盐都区,92,"闯芦荡迷宫,观万千候鸟",4A景区,53,江苏,0.78,大纵湖
179 | 浙江省杭州临安市西天目乡,浙江·杭州·临安市,90,清肺森林浴 | 空气清新负氧离子爆表,4A景区,105,浙江,0.74,天目山
180 | 湖南省长沙市长沙县跳马乡石门村石燕湖,湖南·长沙·长沙县,90,湖南九寨人间瑶池,4A景区,149.5,湖南,0.74,石燕湖
181 | 安徽省黄山市休宁县齐云山镇岩前街018号,安徽·黄山·休宁县,90,丹霞地貌、摩崖石刻、山水田园,4A景区,34,安徽,0.72,齐云山景区
182 | 山东省济南市长清区万德镇马套村,山东·济南·长清区,96,群山掩映,佛光庇佑,人杰地灵。,,22.4,山东,0.0,济南马套将军山旅游度假区
183 | 四川省遂宁市大英县中海大道888号,四川·遂宁·大英县,94,恒温海域随你四季畅游,4A景区,99,四川,0.9199999999999999,中国死海
184 | 广西省桂林市阳朔县南桂荔公路,广西·桂林·阳朔县,94,可兼水陆游览的溶洞,4A景区,55,广西,0.72,阳朔聚龙潭
185 | 山东省临沂市沂水县院东头乡四门洞,山东·临沂·萤火虫水洞·地下大峡谷旅游区,94,著名的地下萤火虫水洞神秘世界,4A景区,95,山东,0.86,萤火虫水洞
186 | 湖北省宜昌市夷陵区三斗坪镇,湖北·宜昌·夷陵区,94,高峡出平湖,5A景区,85,湖北,1.0,三峡大坝旅游区
187 | 陕西省延安市延川县,陕西·延安·延川县,94,一幅天然太极图,,71.5,陕西,0.0,乾坤湾
188 | 甘肃省平凉市崆峒区城西12公里处,甘肃·平凉·崆峒区,94,崆峒派驻地,小心七伤拳,5A景区,87,甘肃,1.0,崆峒山
189 | 河南省登封市,河南·郑州·登封市,92,以山岳自然风光为主的景区,,1.4,河南,0.76,三皇寨
190 | 四川省阿坝藏族羌族自治州,四川·阿坝藏族羌族自治州·茂县,92,冬长无夏、春秋相连,4A景区,39,四川,0.7,叠溪松坪沟风景区
191 | 广东省深圳市龙岗区,广东·深圳·西冲沙滩,92,感受无敌海景,体验野外生活的度假方式,,55,广东,0.0,西冲海滨旅游度假区
192 | 浙江省杭州市淳安县千岛湖镇淡竹王子山森林氧吧景区,浙江·杭州·千岛湖,92,远离雾霭,洗洗肺,静静心,,40,浙江,0.7,千岛湖森林氧吧
193 | 江苏省盐城市盐都区大纵湖景区,江苏·盐城·盐都区,92,"闯芦荡迷宫,观万千候鸟",4A景区,53,江苏,0.78,大纵湖
194 | 浙江省杭州临安市西天目乡,浙江·杭州·临安市,90,清肺森林浴 | 空气清新负氧离子爆表,4A景区,105,浙江,0.74,天目山
195 | 湖南省长沙市长沙县跳马乡石门村石燕湖,湖南·长沙·长沙县,90,湖南九寨人间瑶池,4A景区,149.5,湖南,0.74,石燕湖
196 | 安徽省黄山市休宁县齐云山镇岩前街018号,安徽·黄山·休宁县,90,丹霞地貌、摩崖石刻、山水田园,4A景区,34,安徽,0.72,齐云山景区
197 | 山东省济南市长清区万德镇马套村,山东·济南·长清区,96,群山掩映,佛光庇佑,人杰地灵。,,22.4,山东,0.0,济南马套将军山旅游度假区
198 | 四川省遂宁市大英县中海大道888号,四川·遂宁·大英县,94,恒温海域随你四季畅游,4A景区,99,四川,0.9199999999999999,中国死海
199 | 广西省桂林市阳朔县南桂荔公路,广西·桂林·阳朔县,94,可兼水陆游览的溶洞,4A景区,55,广西,0.72,阳朔聚龙潭
200 | 陕西省延安市延川县,陕西·延安·延川县,94,一幅天然太极图,,71.5,陕西,0.0,乾坤湾
201 | 湖北省宜昌市夷陵区三斗坪镇,湖北·宜昌·夷陵区,94,高峡出平湖,5A景区,85,湖北,1.0,三峡大坝旅游区
202 | 山东省临沂市沂水县院东头乡四门洞,山东·临沂·萤火虫水洞·地下大峡谷旅游区,94,著名的地下萤火虫水洞神秘世界,4A景区,95,山东,0.86,萤火虫水洞
203 | 甘肃省平凉市崆峒区城西12公里处,甘肃·平凉·崆峒区,94,崆峒派驻地,小心七伤拳,5A景区,87,甘肃,1.0,崆峒山
204 | 河南省登封市,河南·郑州·登封市,92,以山岳自然风光为主的景区,,1.4,河南,0.76,三皇寨
205 | 四川省阿坝藏族羌族自治州,四川·阿坝藏族羌族自治州·茂县,92,冬长无夏、春秋相连,4A景区,39,四川,0.7,叠溪松坪沟风景区
206 | 广东省深圳市龙岗区,广东·深圳·西冲沙滩,92,感受无敌海景,体验野外生活的度假方式,,55,广东,0.0,西冲海滨旅游度假区
207 | 浙江省杭州市淳安县千岛湖镇淡竹王子山森林氧吧景区,浙江·杭州·千岛湖,92,远离雾霭,洗洗肺,静静心,,40,浙江,0.7,千岛湖森林氧吧
208 | 江苏省盐城市盐都区大纵湖景区,江苏·盐城·盐都区,92,"闯芦荡迷宫,观万千候鸟",4A景区,53,江苏,0.78,大纵湖
209 | 浙江省杭州临安市西天目乡,浙江·杭州·临安市,90,清肺森林浴 | 空气清新负氧离子爆表,4A景区,105,浙江,0.74,天目山
210 | 湖南省长沙市长沙县跳马乡石门村石燕湖,湖南·长沙·长沙县,90,湖南九寨人间瑶池,4A景区,149.5,湖南,0.74,石燕湖
211 | 安徽省黄山市休宁县齐云山镇岩前街018号,安徽·黄山·休宁县,90,丹霞地貌、摩崖石刻、山水田园,4A景区,34,安徽,0.72,齐云山景区
212 | 山东省济南市长清区万德镇马套村,山东·济南·长清区,96,群山掩映,佛光庇佑,人杰地灵。,,22.4,山东,0.0,济南马套将军山旅游度假区
213 | 四川省遂宁市大英县中海大道888号,四川·遂宁·大英县,94,恒温海域随你四季畅游,4A景区,99,四川,0.9199999999999999,中国死海
214 | 广西省桂林市阳朔县南桂荔公路,广西·桂林·阳朔县,94,可兼水陆游览的溶洞,4A景区,55,广西,0.72,阳朔聚龙潭
215 | 山东省临沂市沂水县院东头乡四门洞,山东·临沂·萤火虫水洞·地下大峡谷旅游区,94,著名的地下萤火虫水洞神秘世界,4A景区,95,山东,0.86,萤火虫水洞
216 | 湖北省宜昌市夷陵区三斗坪镇,湖北·宜昌·夷陵区,94,高峡出平湖,5A景区,85,湖北,1.0,三峡大坝旅游区
217 | 陕西省延安市延川县,陕西·延安·延川县,94,一幅天然太极图,,71.5,陕西,0.0,乾坤湾
218 | 甘肃省平凉市崆峒区城西12公里处,甘肃·平凉·崆峒区,94,崆峒派驻地,小心七伤拳,5A景区,87,甘肃,1.0,崆峒山
219 | 河南省登封市,河南·郑州·登封市,92,以山岳自然风光为主的景区,,1.4,河南,0.76,三皇寨
220 | 四川省阿坝藏族羌族自治州,四川·阿坝藏族羌族自治州·茂县,92,冬长无夏、春秋相连,4A景区,39,四川,0.7,叠溪松坪沟风景区
221 | 广东省深圳市龙岗区,广东·深圳·西冲沙滩,92,感受无敌海景,体验野外生活的度假方式,,55,广东,0.0,西冲海滨旅游度假区
222 | 浙江省杭州市淳安县千岛湖镇淡竹王子山森林氧吧景区,浙江·杭州·千岛湖,92,远离雾霭,洗洗肺,静静心,,40,浙江,0.7,千岛湖森林氧吧
223 | 江苏省盐城市盐都区大纵湖景区,江苏·盐城·盐都区,92,"闯芦荡迷宫,观万千候鸟",4A景区,53,江苏,0.78,大纵湖
224 | 浙江省杭州临安市西天目乡,浙江·杭州·临安市,90,清肺森林浴 | 空气清新负氧离子爆表,4A景区,105,浙江,0.74,天目山
225 | 湖南省长沙市长沙县跳马乡石门村石燕湖,湖南·长沙·长沙县,90,湖南九寨人间瑶池,4A景区,149.5,湖南,0.74,石燕湖
226 | 安徽省黄山市休宁县齐云山镇岩前街018号,安徽·黄山·休宁县,90,丹霞地貌、摩崖石刻、山水田园,4A景区,34,安徽,0.72,齐云山景区
227 |
--------------------------------------------------------------------------------
/qunaer/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xxrz/WEB_qunaer/c966eded67f5f627aac4a85c1a9feccb9e4352d9/qunaer/__init__.py
--------------------------------------------------------------------------------
/qunaer/__pycache__/__init__.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xxrz/WEB_qunaer/c966eded67f5f627aac4a85c1a9feccb9e4352d9/qunaer/__pycache__/__init__.cpython-36.pyc
--------------------------------------------------------------------------------
/qunaer/__pycache__/items.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xxrz/WEB_qunaer/c966eded67f5f627aac4a85c1a9feccb9e4352d9/qunaer/__pycache__/items.cpython-36.pyc
--------------------------------------------------------------------------------
/qunaer/__pycache__/pipelines.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xxrz/WEB_qunaer/c966eded67f5f627aac4a85c1a9feccb9e4352d9/qunaer/__pycache__/pipelines.cpython-36.pyc
--------------------------------------------------------------------------------
/qunaer/__pycache__/settings.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xxrz/WEB_qunaer/c966eded67f5f627aac4a85c1a9feccb9e4352d9/qunaer/__pycache__/settings.cpython-36.pyc
--------------------------------------------------------------------------------
/qunaer/items.py:
--------------------------------------------------------------------------------
1 | # Define here the models for your scraped items
2 | #
3 | # See documentation in:
4 | # https://docs.scrapy.org/en/latest/topics/items.html
5 |
6 | import scrapy
7 |
8 |
9 | class QunaerItem(scrapy.Item):
10 | # define the fields for your item here like:
11 | # name = scrapy.Field()
12 | # pass
13 | #创建数据结构
14 | title = scrapy.Field()
15 | level = scrapy.Field()
16 | area = scrapy.Field()
17 | address = scrapy.Field()
18 | province = scrapy.Field()
19 | string = scrapy.Field()
20 | intro = scrapy.Field()
21 | price = scrapy.Field()
22 | hot_num = scrapy.Field()
--------------------------------------------------------------------------------
/qunaer/middlewares.py:
--------------------------------------------------------------------------------
1 | # Define here the models for your spider middleware
2 | #
3 | # See documentation in:
4 | # https://docs.scrapy.org/en/latest/topics/spider-middleware.html
5 |
6 | from scrapy import signals
7 |
8 | # useful for handling different item types with a single interface
9 | from itemadapter import is_item, ItemAdapter
10 |
11 |
12 | class QunaerSpiderMiddleware:
13 | # Not all methods need to be defined. If a method is not defined,
14 | # scrapy acts as if the spider middleware does not modify the
15 | # passed objects.
16 |
17 | @classmethod
18 | def from_crawler(cls, crawler):
19 | # This method is used by Scrapy to create your spiders.
20 | s = cls()
21 | crawler.signals.connect(s.spider_opened, signal=signals.spider_opened)
22 | return s
23 |
24 | def process_spider_input(self, response, spider):
25 | # Called for each response that goes through the spider
26 | # middleware and into the spider.
27 |
28 | # Should return None or raise an exception.
29 | return None
30 |
31 | def process_spider_output(self, response, result, spider):
32 | # Called with the results returned from the Spider, after
33 | # it has processed the response.
34 |
35 | # Must return an iterable of Request, or item objects.
36 | for i in result:
37 | yield i
38 |
39 | def process_spider_exception(self, response, exception, spider):
40 | # Called when a spider or process_spider_input() method
41 | # (from other spider middleware) raises an exception.
42 |
43 | # Should return either None or an iterable of Request or item objects.
44 | pass
45 |
46 | def process_start_requests(self, start_requests, spider):
47 | # Called with the start requests of the spider, and works
48 | # similarly to the process_spider_output() method, except
49 | # that it doesn’t have a response associated.
50 |
51 | # Must return only requests (not items).
52 | for r in start_requests:
53 | yield r
54 |
55 | def spider_opened(self, spider):
56 | spider.logger.info('Spider opened: %s' % spider.name)
57 |
58 |
59 | class QunaerDownloaderMiddleware:
60 | # Not all methods need to be defined. If a method is not defined,
61 | # scrapy acts as if the downloader middleware does not modify the
62 | # passed objects.
63 |
64 | @classmethod
65 | def from_crawler(cls, crawler):
66 | # This method is used by Scrapy to create your spiders.
67 | s = cls()
68 | crawler.signals.connect(s.spider_opened, signal=signals.spider_opened)
69 | return s
70 |
71 | def process_request(self, request, spider):
72 | # Called for each request that goes through the downloader
73 | # middleware.
74 |
75 | # Must either:
76 | # - return None: continue processing this request
77 | # - or return a Response object
78 | # - or return a Request object
79 | # - or raise IgnoreRequest: process_exception() methods of
80 | # installed downloader middleware will be called
81 | return None
82 |
83 | def process_response(self, request, response, spider):
84 | # Called with the response returned from the downloader.
85 |
86 | # Must either;
87 | # - return a Response object
88 | # - return a Request object
89 | # - or raise IgnoreRequest
90 | return response
91 |
92 | def process_exception(self, request, exception, spider):
93 | # Called when a download handler or a process_request()
94 | # (from other downloader middleware) raises an exception.
95 |
96 | # Must either:
97 | # - return None: continue processing this exception
98 | # - return a Response object: stops process_exception() chain
99 | # - return a Request object: stops process_exception() chain
100 | pass
101 |
102 | def spider_opened(self, spider):
103 | spider.logger.info('Spider opened: %s' % spider.name)
104 |
--------------------------------------------------------------------------------
/qunaer/pipelines.py:
--------------------------------------------------------------------------------
1 | # Define your item pipelines here
2 | #
3 | # Don't forget to add your pipeline to the ITEM_PIPELINES setting
4 | # See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html
5 |
6 |
7 | # useful for handling different item types with a single interface
8 | import logging
9 | import os
10 | import uuid
11 | import pymongo
12 | from scrapy.selector import Selector
13 | from neo4j import GraphDatabase
14 | import numpy as np
15 |
16 | logfile_name = uuid.uuid1()
17 | if not os.path.exists('logs/'):
18 | os.mkdir('logs/')
19 | logging.basicConfig(filename=f'logs/{logfile_name}.log', filemode='a+',
20 | format='%(levelname)s - %(asctime)s - %(message)s', datefmt='%d-%b-%y %H:%M:%S')
21 |
22 | class QunaerPipeline:
23 | # 建立数据库
24 | db = pymongo.MongoClient("mongodb://127.0.0.1:27017/")["db_travel"]
25 | db_qunaer = db['db_qunaer']
26 | db_triples = db['db_qunaerTriples']
27 | driver = GraphDatabase.driver(
28 | "bolt://localhost:7687", auth=("neo4j", "123"),encrypted=False)
29 |
30 | def add_node(self, tx, name1, relation, name2):
31 | tx.run("MERGE (a:Node {name: $name1}) "
32 | "MERGE (b:Node {name: $name2}) "
33 | "MERGE (a)-[:"+relation+"]-> (b)",
34 | name1=name1, name2=name2)
35 |
36 | def process_item(self, item, spider):
37 | #填入数据库
38 | self.db_qunaer.insert_one(
39 | {
40 | 'title': item['title'] ,
41 | 'level': item['level'],
42 | 'area': item['area'],
43 | 'address': item['address'],
44 | 'province' :item['province'],
45 | 'string': item['string'],
46 | 'intro': item['intro'],
47 | 'price': item['price'],
48 | 'hot_num': item['hot_num']
49 | })
50 |
51 | # 处理三元组
52 | entity = item['title']
53 | attrs = ['景区名字','景区等级','地区','地址','省份','热度','简介','价格','月销']
54 | values = [item['title'],item['level'],item['area'],item['address'],item['province'],item['string'],item['intro'],item['price'],item['hot_num']]
55 | if len(attrs) != len(values):
56 | return
57 | # indexs = list(np.arange(1,len(attrs),1))
58 | with self.driver.session() as session:
59 | try:
60 | for attr, value in zip(attrs, values,):
61 | # index = int(index)
62 | entity = str(entity)
63 | attr = str(attr)
64 | value = str(value)
65 | try:
66 | logging.warning(entity + '_' + attr + '_' + value)
67 | self.db_triples.insert_one({
68 | "_id": entity + '_' + attr + '_' + value,
69 | "entity": entity,
70 | "attr": attr,
71 | "value": value, }
72 | )
73 | except pymongo.errors.DuplicateKeyError:
74 | pass
75 | session.write_transaction(
76 | self.add_node, entity, attr, value)
77 | except Exception:
78 | logging.error('\n---'.join(attrs) +
79 | '\n_________________' + '\n---'.join(values))
80 | print(item)
81 | return item
82 |
--------------------------------------------------------------------------------
/qunaer/settings.py:
--------------------------------------------------------------------------------
1 | # Scrapy settings for qunaer project
2 | #
3 | # For simplicity, this file contains only settings considered important or
4 | # commonly used. You can find more settings consulting the documentation:
5 | #
6 | # https://docs.scrapy.org/en/latest/topics/settings.html
7 | # https://docs.scrapy.org/en/latest/topics/downloader-middleware.html
8 | # https://docs.scrapy.org/en/latest/topics/spider-middleware.html
9 |
10 | BOT_NAME = 'qunaer'
11 |
12 | SPIDER_MODULES = ['qunaer.spiders']
13 | NEWSPIDER_MODULE = 'qunaer.spiders'
14 |
15 |
16 | # Crawl responsibly by identifying yourself (and your website) on the user-agent
17 | #USER_AGENT = 'qunaer (+http://www.yourdomain.com)'
18 |
19 | # Obey robots.txt rules
20 | ROBOTSTXT_OBEY = False
21 |
22 | # Configure maximum concurrent requests performed by Scrapy (default: 16)
23 | #CONCURRENT_REQUESTS = 32
24 |
25 | # Configure a delay for requests for the same website (default: 0)
26 | # See https://docs.scrapy.org/en/latest/topics/settings.html#download-delay
27 | # See also autothrottle settings and docs
28 | DOWNLOAD_DELAY = 1
29 | # The download delay setting will honor only one of:
30 | #CONCURRENT_REQUESTS_PER_DOMAIN = 16
31 | #CONCURRENT_REQUESTS_PER_IP = 16
32 |
33 | # Disable cookies (enabled by default)
34 | #COOKIES_ENABLED = False
35 |
36 | # Disable Telnet Console (enabled by default)
37 | #TELNETCONSOLE_ENABLED = False
38 |
39 | # Override the default request headers:
40 | #DEFAULT_REQUEST_HEADERS = {
41 | # 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
42 | # 'Accept-Language': 'en',
43 | #}
44 | DEFAULT_REQUEST_HEADERS = {
45 | 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
46 | 'Accept-Language': 'en',
47 | 'User-Agent': 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36'
48 | }
49 |
50 | # Enable or disable spider middlewares
51 | # See https://docs.scrapy.org/en/latest/topics/spider-middleware.html
52 | #SPIDER_MIDDLEWARES = {
53 | # 'qunaer.middlewares.QunaerSpiderMiddleware': 543,
54 | #}
55 |
56 | # Enable or disable downloader middlewares
57 | # See https://docs.scrapy.org/en/latest/topics/downloader-middleware.html
58 | #DOWNLOADER_MIDDLEWARES = {
59 | # 'qunaer.middlewares.QunaerDownloaderMiddleware': 543,
60 | #}
61 |
62 | # Enable or disable extensions
63 | # See https://docs.scrapy.org/en/latest/topics/extensions.html
64 | #EXTENSIONS = {
65 | # 'scrapy.extensions.telnet.TelnetConsole': None,
66 | #}
67 |
68 | # Configure item pipelines
69 | # See https://docs.scrapy.org/en/latest/topics/item-pipeline.html
70 | ITEM_PIPELINES = {
71 | 'qunaer.pipelines.QunaerPipeline': 300,
72 | }
73 |
74 | # Enable and configure the AutoThrottle extension (disabled by default)
75 | # See https://docs.scrapy.org/en/latest/topics/autothrottle.html
76 | #AUTOTHROTTLE_ENABLED = True
77 | # The initial download delay
78 | #AUTOTHROTTLE_START_DELAY = 5
79 | # The maximum download delay to be set in case of high latencies
80 | #AUTOTHROTTLE_MAX_DELAY = 60
81 | # The average number of requests Scrapy should be sending in parallel to
82 | # each remote server
83 | #AUTOTHROTTLE_TARGET_CONCURRENCY = 1.0
84 | # Enable showing throttling stats for every response received:
85 | #AUTOTHROTTLE_DEBUG = False
86 |
87 | # Enable and configure HTTP caching (disabled by default)
88 | # See https://docs.scrapy.org/en/latest/topics/downloader-middleware.html#httpcache-middleware-settings
89 | #HTTPCACHE_ENABLED = True
90 | #HTTPCACHE_EXPIRATION_SECS = 0
91 | #HTTPCACHE_DIR = 'httpcache'
92 | #HTTPCACHE_IGNORE_HTTP_CODES = []
93 | #HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage'
94 |
--------------------------------------------------------------------------------
/qunaer/spiders/__init__.py:
--------------------------------------------------------------------------------
1 | # This package will contain the spiders of your Scrapy project
2 | #
3 | # Please refer to the documentation for information on how to create and manage
4 | # your spiders.
5 |
--------------------------------------------------------------------------------
/qunaer/spiders/__pycache__/__init__.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xxrz/WEB_qunaer/c966eded67f5f627aac4a85c1a9feccb9e4352d9/qunaer/spiders/__pycache__/__init__.cpython-36.pyc
--------------------------------------------------------------------------------
/qunaer/spiders/__pycache__/qunaer.cpython-36.pyc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/xxrz/WEB_qunaer/c966eded67f5f627aac4a85c1a9feccb9e4352d9/qunaer/spiders/__pycache__/qunaer.cpython-36.pyc
--------------------------------------------------------------------------------
/qunaer/spiders/qunaer.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | import scrapy
3 | from ..items import QunaerItem
4 | import parsel
5 |
6 |
7 | class QunaerSpider(scrapy.Spider):
8 | name = 'qunaer'
9 | allowed_domains = ['piao.qunar.com']
10 | url = 'https://piao.qunar.com/ticket/list.htm?keyword=%E7%83%AD%E9%97%A8%E6%99%AF%E7%82%B9®ion=&from=mps_search_suggest&subject=%E8%87%AA%E7%84%B6%E9%A3%8E%E5%85%89&page={}&sku='
11 | page = 1
12 |
13 | def start_requests(self):
14 | for i in range(0, 500, 30):
15 | url = self.url.format(i)
16 | yield scrapy.Request(
17 | url=url,
18 | callback=self.parse
19 | )
20 |
21 | def parse(self, response):
22 | items = QunaerItem()
23 | selector = parsel.Selector(response.text)
24 | lists = selector.css('#search-list .sight_item')
25 | for list in lists:
26 | items['title'] = list.css('.sight_item_caption a::attr(title)').get() # 景区名字
27 | items['level'] = list.css('.sight_item_info .level::text').get() # 景区等级
28 | items['area'] = list.css('.area a::attr(title)').get() # 地区
29 | items['address'] = list.css('.address span::attr(title)').get() # 地址
30 | items['province'] = items['area'].split("·")[0]
31 | string = list.css('.product_star_level em::attr(title)').get() # 热度
32 | items['string']= float(string.strip('热度: '))
33 | items['intro']= list.css('.intro::attr(title)').get() # 简介
34 | items['price'] = list.css('.sight_item_price em::text').get() # 价格
35 | items['hot_num'] = list.css('.hot_num::text').get() # 月销
36 | yield items
--------------------------------------------------------------------------------
/run.py:
--------------------------------------------------------------------------------
1 | from scrapy import cmdline
2 |
3 | cmdline.execute('scrapy crawl qunaer -o qunaer.csv'.split())
--------------------------------------------------------------------------------
/scrapy.cfg:
--------------------------------------------------------------------------------
1 | # Automatically created by: scrapy startproject
2 | #
3 | # For more information about the [deploy] section see:
4 | # https://scrapyd.readthedocs.io/en/latest/deploy.html
5 |
6 | [settings]
7 | default = qunaer.settings
8 |
9 | [deploy]
10 | #url = http://localhost:6800/
11 | project = qunaer
12 |
--------------------------------------------------------------------------------