大众点评爬虫

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

### 爬取前的准备

- 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
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值