Python——大众点评评论爬虫代码

评论链接

放入excel(negkey)中的内容
# -*- coding: utf-8 -*-
"""
Created on Thu Aug 16 14:52:09 2018

@author: Shirley
"""
#好评链接:http://www.dianping.com/shop/2044996/review_all/p2?queryType=reviewGrade&queryVal=good
#差评链接:http://www.dianping.com/shop/2044996/review_all/p2?queryType=reviewGrade&queryVal=bad


import requests
from lxml import etree
import xlrd
import random
import time

data = []
def Comments(url):
    
    headers = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
               'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36',
               'Cookie': '浏览器获取的cookie'
               }
    #url = 'http://www.dianping.com/shop/19110508/review_all?queryType=reviewGrade&queryVal=bad'
    resp = requests.get(url,headers=headers)

    #print (resp.content.decode('utf-8'))#查看爬取网页代码,代码中文内容用二进制表示,故print时要decode

    comments = etree.HTML(resp.text,parser=etree.HTMLParser(encoding='utf-8'))
    commentlong = comments.xpath('//div[@class="review-words Hide"]')#长评
    commentshort = comments.xpath('//div[@class="review-words"]')#短评
    for l in commentlong:
        data.append(l.xpath('string(.)').replace("\t","").replace("\n","").replace(" ","").replace("收起评论","").encode('gbk','ignore').decode('gbk'))
    #把不需要的字符清除,可以用split()去掉\xa0,\t,\n,但是句子会被拆分成一个列表,不方便后续使用
    for s in commentshort:
        data.append(s.xpath('string(.)').replace("\t","").replace("\n","").replace(" ","").encode('gbk','ignore').decode('gbk'))

def getComments():
    path = 'D:/anaconda/shirleylearn/dazhongdianping/negkey.xlsx'#抓取关键字
    excelfile = xlrd.open_workbook(path)
    keys = excelfile.sheet_by_name('Sheet1')
    n = keys.nrows
    for i in range(0,n):
        key = int(keys.row(i)[0].value)
        for page in range(1,int(keys.row(i)[1].value)+1):
            url = 'http://www.dianping.com/shop/%d/review_all/p%d?queryType=reviewGrade&queryVal=bad'%(key,page)#拼链接,修改bad,good即为差评和好评
            #print(url)
            Comments(url)
            time.sleep(random.random())

if __name__ == "__main__":
    getComments()
    print (len(data))
    with open('neg.txt','w') as f:#把评论放入txt,好评改为pos.txt
        for k in data:
            f.write(k)

抓取结果展示
爬一次IP就被封了 o(╥﹏╥)o
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 想了解一下吃货身上都有些什么特质。可以抓取点评的会员数据进行分析。 一、URL分析 这个是全国的会员榜,TOP30...
    向右奔跑阅读 2,014评论 11 12
  • WechatSogou [1]– 微信公众号爬虫。 基于搜狗微信搜索的微信公众号爬虫接口,可以扩展成基于搜狗搜索的...
    guanguans阅读 5,373评论 0 23
  • 一、背景 大众点评评论部分还是值得我们关注的,因为我们上点评网看的也就是评论,通过评论抓取分析,也有利于我们对店铺...
    凉城的夜阅读 4,107评论 0 0
  • 时光如梭, 岁月如歌, 阳光明媚, 购物k歌, 吃饭,跳舞,赛车! 撸串,开喝! 清醒?醉着? 管他什么! 笑与泪...
    旭旭有话说阅读 228评论 0 1
  • 劳力士卖的不是表,是自信; 希尔顿卖的不是酒店,是舒适; XS饮料卖的不是饮料,是一个平凡人都可以成功的事业机会!...
    璎珞有话说阅读 602评论 0 0

友情链接更多精彩内容