当前位置:   article > 正文

网络爬虫 | 采集穷游网某城市旅游景点

网络爬虫 | 采集穷游网某城市旅游景点

一、发现网址规律

1.1 判断网站类型

这里我选择哈尔滨作为目标城市,采集哈尔滨的景点信息。第一页的网址

https://place.qyer.com/haerbin/sight/   
  • 1

点击页面下方翻页到第二页, 页面内容已经发生变化,但是网址栏中的网址没有变化,依然是

https://place.qyer.com/haerbin/sight/   
  • 1

所以可以判断该网站为动态网站类型,对付这类网站,需要打开开发者工具Network面板来构建网址规律。

1.2 抓包构建网址规律

1.2.1 Headers

我用的chrome浏览器, F12键(Mac 快捷键command+option+I)打开开发者工具,如下图。

打开开发者工具后, 点击Network面板。为了让 Network监测到数据流, 点击2 。这样就能发现下方截图中的

poi.php?action=list_json   
  • 1

可以基于上方截图确认,该网站现在用的是post请求方法, 写代码时可以用requests.post(url, data)方式发起请求。

1.2.2 Payload

网址规律翻页规律如何构造呢, 通过检查发现 Payload决定着翻页,我们也看到下面截图中,page: 2对应着页面 2

1.2.3 Preview

我们顺便点击Preview,检查预览数据是否与页面数据有对应关系。截图中「丁香公园」出现在页面和preview中。

1.3 构造网址规律

构造网址规律, 以第二页为例, 发起请求,查看数据

二、存储数据

采集的字段包括

  • 景点名称

  • 景点链接

  • 评论人数

  • 评级

  • 图片链接

使用csv格式存储数据

import csv

with open('harbin_sight.csv', 'w', encoding='utf-8', newline='') as csvf:
    fieldnames = ['sightName', 'sightUrl', 'commentCount', 'rate', 'imgUrl']
    writer = csv.DictWriter(csvf, fieldnames = fieldnames)
    writer.writeheader()
    
    for sight in resp.json()['data']['list']:
        sight_info = {'sightName': sight['cnname'],
                      'sightUrl': 'https:' + sight['url'],
                      'commentCount': sight['commentCount'],
                      'rate': sight['grade'],
                      'imgUrl': sight['photo']
                     }
        
        writer.writerow(sight_info)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

代码运行后, 尝试检查harbin_sight.csv, 现在该文件内暂时存储了第二页的景点信息

import pandas as pd

df = pd.read_csv('harbin_sight.csv')

print('景点数: ', len(df))
df.head()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

三、批量采集

以哈尔滨为例, 景点页面一共有92页,批量采集这92页信息。完整代码

import requests
import csv
import time

url = 'https://place.qyer.com/poi.php?action=list_json'
#控制翻页的字典
formdata = {'page': 2,
            'type': 'city',
            'pid': 11597,
            'sort': 32,
            'subsort': 'all',
            'isnominate': -1,
            'haslastm': 'false',
            'rank': 6}

headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36'}


#新建csv,存储数据
with open('harbin_sight.csv', 'w', encoding='utf-8', newline='') as csvf:
    #设置csv的字段
    fieldnames = ['sightName', 'sightUrl', 'commentCount', 'rate', 'imgUrl']
    writer = csv.DictWriter(csvf, fieldnames = fieldnames)
    writer.writeheader()
    
    #采集哈尔滨从第1页到92页
    for page in range(1, 93):
        #更新formdata网页数信息,相当于翻页
        formdata['page'] = page
        #time.sleep(1) 控制访问速度,每秒访问1次
        time.sleep(1)
        resp = requests.post(url, data=formdata, headers=headers)
        
        print('正在采集哈尔滨第{}页信息'.format(page))
        #存储数据
        for sight in resp.json()['data']['list']:
            sight_info = {'sightName': sight['cnname'],
                          'sightUrl': 'https:' + sight['url'],
                          'commentCount': sight['commentCount'],
                          'rate': sight['grade'],
                          'imgUrl': sight['photo']
                         }
            writer.writerow(sight_info)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 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

Run

正在采集哈尔滨第1页信息
正在采集哈尔滨第2页信息
......
正在采集哈尔滨第91页信息
正在采集哈尔滨第92页信息
  • 1
  • 2
  • 3
  • 4
  • 5

检查数据

import pandas as pd

df = pd.read_csv('harbin_sight.csv')

print('景点数: ', len(df))
df.head()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

题外话

当下这个大数据时代不掌握一门编程语言怎么跟的上脚本呢?当下最火的编程语言Python前景一片光明!如果你也想跟上时代提升自己那么请看一下.

在这里插入图片描述

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述
若有侵权,请联系删除
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号