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

文章讲述了使用Python抓取哈尔滨景点动态网站数据的方法,涉及URL构建、POST请求、数据解析和CSV存储,以及批量采集多页数据的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、发现网址规律

1.1 判断网站类型

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

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

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

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

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

1.2 抓包构建网址规律

1.2.1 Headers

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

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

poi.php?action=list_json   

可以基于上方截图确认,该网站现在用的是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)

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

import pandas as pd

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

print('景点数: ', len(df))
df.head()

三、批量采集

以哈尔滨为例, 景点页面一共有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)

Run

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

检查数据

import pandas as pd

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

print('景点数: ', len(df))
df.head()

题外话

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

在这里插入图片描述

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

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

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

img
img

二、Python必备开发工具

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

三、最新Python学习笔记

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

img

四、Python视频合集

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

img

五、实战案例

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

img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述
若有侵权,请联系删除
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值