大众点评爬虫

本文档介绍了如何使用Python爬虫抓取大众点评的评论数据。首先,需要准备MySQL数据库并修改配置;接着,获取并设置cookie以登录。爬取过程中注意每100页左右可能出现的验证,解锁后重启程序。更换店铺时更新店铺ID和页数,并删除进度文件。数据最终存储在数据库中,可用于后续的数据分析和情感挖掘。

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

## 大众点评评论爬虫脚本使用指南

### 爬取前的准备

- mysql数据库安装、打开服务
- 修改mysqls.py程序中数据库的用户名密码等,并创建对应的database和table,可以使用mysqls.creat_table()函数
- 登录大众点评官网,通过谷歌开发者工具等获取到当前的cookie,修改main.py中的cookie变量
- 查看爬取的店铺的店铺ID以及评论的页数,修改main.py 中对应的位置
- 如果有xuchuan.txt(保存当前点评爬取进度),请在爬取前删除(每换一个店铺要删除一次)

### 爬取过程中

- 由于大概每爬取100页左右,需要进行一次验证,当发现获取评论为0条或者异常时,请用浏览器打开点评页面,滑动滑块解锁,然后重启程序,有断点续传,不虚~
- 当更换店铺时,需要把店铺ID进行替换,还有评论的页数也要替换,还要删除xuchuan.txt

### 爬取结束后

数据存储于MYSQL数据库中,可以使用各种方法读取,啦啦啦啦~

 

1.安装Mysql,安装Navicat,创建数据库dianping。

2.封装操作数据库工具类

# -*- coding: utf-8 -*-
"""
Created on Tue Jul 24 15:45:05 2018

@author: bin
"""

import pymysql

#连接MYSQL数据库
db = pymysql.connect("localhost","root","root","dianping" )
cursor = db.cursor()

#在数据库建表
def creat_table():
    cursor.execute("DROP TABLE IF EXISTS DZDP")
    sql = '''CREATE TABLE DZDP(
            cus_id varchar(100),
            comment_time varchar(55),
            comment_star varchar(55),
            cus_comment text(5000),
            kouwei varchar(55),
            huanjing varchar(55),
            fuwu varchar(55),
            shopID varchar(55)
            );'''
    cursor.execute(sql)
    return

#存储爬取到的数据
def save_data(data_dict):
    sql = '''INSERT INTO DZDP(cus_id,comment_time,comment_star,cus_comment,kouwei,huanjing,fuwu,shopID) VALUES(%s,%s,%s,%s,%s,%s,%s,%s)'''
    value_tup = (data_dict['cus_id']
                 ,data_dict['comment_time']
                 ,data_dict['comment_star']
                 ,data_dict['cus_comment']
                 ,data_dict['kouwei']
                 ,data_dict['huanjing']
                 ,data_dict['fuwu']
                 ,data_dict['shopID']
                 )
    try:
        cursor.execute(sql,value_tup)
        db.commit()
    except:
        print('数据库写入失败')
    return

#关闭数据库
def close_sql():
    db.close()

3.创建表

creat_table()

4.在当前python文件同一个目录中创建proxies.txt,写入代理池,也可以自己手动创建搞个代理池,如果自己创建代理池,可参考CRAW_IP.py

 

CRAW_IP.py:

import requests

from bs4 import BeautifulSoup

import lxml

from multiprocessing import Process, Queue

import random

import json

import time

import requests


class Proxies(object):
    """docstring for Proxies"""

    def __init__(self, page=3):

        self.proxies = []

        self.verify_pro = []

        self.page = page

        self.headers = {

            'Accept': '*/*',

            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',

            'Accept-Encoding': 'gzip, deflate, sdch',

            'Accept-Language': 'zh-CN,zh;q=0.8'

        }

        self.get_proxies()

        self.get_proxies_nn()

    def get_proxies(self):

        page = random.randint(1, 10)

        page_stop = page + self.page

        while page < page_stop:

            url = 'http://www.xicidaili.com/nt/%d' % page

            html = requests.get(url, headers=self.headers).content

            soup = BeautifulSoup(html, 'lxml')

            ip_list = soup.find(id='ip_list')

            for odd in ip_list.find_all(class_='odd'):
                protocol = odd.find_all('td')[5].get_text().lower() + '://'

                self.proxies.append(protocol + ':'.join([x.get_text() for x in odd.find_all('td')[1:3]]))

            page += 1

    def get_proxies_nn(self):

        page =
### 使用 Python 进行爬虫开发 #### 爬虫项目概述 为了实现数据采集的目标,可以构建一个基于Python的爬虫来收集来自大众点评网的数据。此过程不仅涉及到了解如何启动爬虫[^1],还涵盖了具体的技术选型以及法律合规性考虑。 #### 技术栈介绍 - **编程语言**: Python 是首选的语言环境。 - **爬虫框架**: Scrapy 被认为是一个强大的选项,尤其当面对复杂的网页结构时[^2]。 - **页面解析库**: BeautifulSoup 提供了一种简便的方法来提取 HTML 或 XML 文档中的信息。 - **数据库支持**: MySQL 和 MongoDB 都是可以用来保存所获得的数据的选择之一。 - **数据分析工具包**: Pandas 和 NumPy 对于后期处理和分析非常有用。 - **可视化软件**: Matplotlib 和 Seaborn 帮助创建直观的结果展示图表。 - **NLP 库**: NLTK 或 TextBlob 支持对评论文本执行情感分析。 #### 法律风险提示 值得注意的是,在设计任何类型的网络爬虫之前,应当充分理解并遵守相关法律法规。特别是要确保不违反目标网站的服务条款,并且避免触及个人隐私保护法规[^3]。 #### 实际操作指南 对于想要从大众点评获取公开可访问的内容来说,八爪鱼采集器提供了预配置好的模板可以直接利用,这大大简化了初期的工作量[^4]。下面给出一段简单的代码片段作为入门级的例子: ```python import scrapy from bs4 import BeautifulSoup import requests class DianpingSpider(scrapy.Spider): name = "dianping" start_urls = ['https://www.dianping.com/search/category/0/10'] def parse(self, response): soup = BeautifulSoup(response.body,'html.parser') items = [] for item in soup.select('.shop-list li'): title = item.find('a', class_='title').get_text(strip=True) address = item.find('span', attrs={'itemprop': 'street-address'}).get_text(strip=True) yield { 'name': title, 'location': address } ``` 这段脚本展示了怎样定义一个基本的Scrapy Spider类请求指定URL下的文档内容,并从中抽取特定标签内的文字信息。请注意实际部署前还需要做更多的优化工作,比如加入异常处理机制、设置合理的延时间隔等措施以减少对服务器的压力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值