本文介绍爬豆瓣电影的战狼影评,并将影评进行清除(去符号、分词、去重、统计),最终做成词云。
最重要的是,豆瓣是需要登录的,如果不登录,爬到第十页左右,会失败。登录的话,可以爬到6000多个影评,才会需要验证码。
登录是cookies。先要模拟登录,这样可以得到网页返回的信息,然后利用这些信息,去request申请网页,得到网页返回的html信息(包含影评信息等)。得到后,进行正则语言来筛选出自己要的信息,保存在zy.csv中。PS:因为这个模拟登录,最后只登陆一次,因为如频繁登录,会被要求输入验证码,是一件相当麻烦而且目前我还未能解决的问题,所以当第一次模拟登录得到信息后,就可以将模拟登录这里的代码屏蔽掉。
整体代码如下:(python_pachong项目中的huic.py中的代码)
#!/usr/bin/env python
# coding=utf-8
from Tkinter import*
import tkMessageBox
import urllib
import urllib2
import re
import requests
import sys
import csv
import codecs
import cookielib
from pip._vendor.requests.cookies import CookieConflictError
reload(sys)
sys.setdefaultencoding("utf-8")
csvfile=file('zy.csv','wb')
csvfile.write(codecs.BOM_UTF8)
writer=csv.writer(csvfile)
def DoPa(html): #两个参数传进来的是URL和一个编好码的K-V对
#以下这些cookie之类的,就是已经知道了登录返回信息,可以利用这些cookie信息去爬网页,然后正则语言来抠出有用信息。
# 创建MozillaCookieJar实例对象
cookie = cookielib.MozillaCookieJar()
# 从文件中读取cookie内容到变量
cookie.load('cookie.txt', ignore_discard=True, ignore_expires=True)
# 创建请求的request
req = urllib2.Request(html)
# 利用urllib2的build_opener方法创建一个opener
print cookie
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
response = opener.open(req)
# print response.read()
text=response.read()
st=r'<divclass=\"comment\">.*?</div>'
ll=re.findall(st, text, re.S)
x=len(ll)
for i in range(0,x):
number=re.compile('.*?<spanclass=\"votes\">(.*?)</span>')
Num=number.findall(ll[i])
name=re.compile(