Python练习:优酷评论过滤(抓取当前视频全部评论,并过滤不包括所需关键词的留言)

 1 # coding:utf-8
 2 print(‘正在初始化...‘)
 3 import requests
 4 import re
 5 from lxml.html import fromstring
 6 import pyautogui
 7 import sys
 8 import os
 9 from multiprocessing.dummy import Pool
10 from lxml import _elementpath
11
12
13 class Youku_comment:
14
15     """docstring for Youku_comment"""
16
17     def __init__(self, raw_url):
18
19         self.pid = re.findall(‘/id_(.*?)\.html‘, raw_url)[0]
20         r1 = requests.get(raw_url)
21         title = re.findall(‘<title>(.*?)</title>‘, r1.text)[0]
22         title = re.sub(‘\W‘, ‘‘, title).replace(‘在线播放优酷网视频高清在线观看‘, ‘‘)
23         totalpn = self.get_totalpn(self.pid)
24         print(‘视频ID:%s‘ % self.pid, ‘\n视频标题:%s‘ %
25               title, ‘\n总页码数:%s\n正在抓取...‘ % totalpn)
26
27         pp = Pool(30)
28         pagenums = range(1, totalpn + 1)
29         result = pp.map(self.get_comment, pagenums)
30         pp.close()
31         pp.join()
32         result = [i for i in result if i]
33         self.aa = sum(result, [])
34         # print(jieguo)
35         # with open(‘%s.csv‘ % title, ‘w‘, encoding=‘gbk‘) as f:
36         #     f.write(jieguo.encode(‘gbk‘, ‘ignore‘).decode(‘gbk‘))
37
38     def get_totalpn(self, pid):
39         r = requests.get(
40             ‘http://comments.youku.com/comments/~ajax/vpcommentContent.html?__ap={"videoid":"%s","page":1}‘ % pid)
41         totalpn = (int(r.json()[‘totalSize‘].replace(‘,‘, ‘‘)) // 30) + 1
42         return totalpn
43
44     def get_comment(self, pagenum):
45         for _ in range(5):
46             try:
47                 r = requests.get(
48                     ‘http://comments.youku.com/comments/~ajax/vpcommentContent.html?__ap={"videoid":"%s","page":%s}‘ % (self.pid, pagenum), timeout=3)
49                 sjson = r.json()
50                 scode = sjson[‘con‘]
51                 ss = re.findall(‘<p id=".*?">.*?</p>‘, scode, flags=re.S)
52                 ss = [re.sub(‘<.*?>‘, ‘‘, i) for i in ss]
53                 if ss:
54                     return ss
55             except:
56                 pass
57
58
59 def filt1(str1, kws):
60     kws = kws.split(‘ ‘) if kws else ‘OST 背景 音乐 旋律 歌曲 调子 music 耳熟 BGM 谁唱的 来自 出自 原声‘.split(
61         ‘ ‘)
62     for i in kws:
63         if i in str1:
64             return str1
65
66
67 def quchong(ll):
68     ss = ‘‘
69     for i in ll:
70         if i in ss:
71             continue
72         else:
73             ss = ss + ‘\n‘ + i
74     return ss
75
76 while 1:
77     try:
78         url = pyautogui.prompt(‘请输入网址:‘)
79         if not url:
80             break
81         tt = Youku_comment(url)
82         pinglun = tt.aa
83         while 1:
84             kws = pyautogui.prompt(‘请输入关键词,多个请用空格隔开(直接回车则代表找背景音乐):‘)
85             kws = kws if kws else 0
86             ss = [filt1(i, kws) for i in pinglun]
87             ss = [i for i in ss if i]
88             ss = quchong(ss)
89             print(‘检索结果:\n‘)
90             print(ss)
91             jixu = pyautogui.confirm(
92                 text=‘是否要继续检索‘, title=‘请确认‘, buttons=[‘是‘, ‘否‘])
93             if jixu == ‘否‘:
94                 break
95
96     except Exception as e:
97         print(e)
98         print(‘错误,请重试‘)
99 os.system(‘pause‘)

Windows已编译可执行文件: http://pan.baidu.com/s/1bn0jLmf

时间: 2024-08-28 13:23:17

Python练习:优酷评论过滤(抓取当前视频全部评论,并过滤不包括所需关键词的留言)的相关文章

python自然语言处理1——从网络抓取数据

python自然语言处理1--从网络抓取数据 写在前面 本节学习python2.7 BeautifulSoup库从网络抽取数据的技术,检验之简而言之就是爬虫技术.网络编程是一门复杂的技术,在需要基础的地方,文中给出的链接地址,都是很好的教程,可以参考,我在这里不在重复发明轮子.本节的主旨在于: 帮助快速掌握基本爬虫技术,形成一条主线,能为自己的实验构造基础数据.掌握爬虫技术后,可以从网络抓取符合特定需求的数据供分析,这里学习的爬虫技术适用于数据挖掘.自然语言处理等需要从外部挖掘数据的学科. 1.

初识python之 APP store排行榜 蜘蛛抓取(一)

直接上干货!! 采用python 2.7.5-windows 打开 http://www.apple.com/cn/itunes/charts/free-apps/  如上图可以见采用的是utf-8 编码 经过一番思想斗争  编码如下 (拍砖别打脸) #coding=utf-8 import urllib2 import urllib import re import thread import time #----------- APP store 排行榜 ----------- class

Asp 使用 Microsoft.XMLHTTP 抓取网页内容(没用乱码),并过滤需要的内容

Asp 使用 Microsoft.XMLHTTP 抓取网页内容,并过滤需要的内容 Asp 使用 Microsoft.XMLHTTP 抓取网页内容无乱码处理,并过滤需要的内容 示例源码: <% Dim xmlUrl,http,strHTML,strBody xmlUrl = Request.QueryString("u") REM 异步读取XML源 Set http = server.CreateObject("Microsoft.XMLHTTP") http.

Python爬虫--2019大学排名数据抓取

Python爬虫--2019大学排名数据抓取 准备工作 输入:大学排名URL连接 输出:大学排名信息屏幕输出 所需要用到的库:requests,bs4 思路 获取网页信息 提取网页中的内容并放到数据结构中 利用数据结构展示并输出结果 程序设计 定义函数getHTMLText()获取网页信息 定义函数UnivList()放入数据结构 定义函数printUnivList()输出到屏幕 总体而言: 写出需要自定义的函数,制作出总体的框架 写出主函数框架,实现功能 最后调用函数 步骤 查看url源代码

python之OpenCv(五)---抓取摄像头视频图像

OpenCV 可以通过 头videoCapture()方法打开摄像 摄像头变量 = cv2.VideoCapture(n)   n为整数,内置摄像头为0,若有其他摄像头则依次为1,2,3,4,... cap = cv2.VideoCapture(0) 摄像头是否处于打开状态可以通过isOpened()方法进行判断 摄像头变量.isOpened() 若打开返回True,反正返回False cap.isOpened() 布尔变量,图像变量 = 摄像头变量.read()  可以通过read() 方法读

[python]利用selenium模拟用户操作抓取天猫评论数据

准备: python3.5 安装selenium包 第一种方法: cmd里输pip install selenium,但是经常报错 第二种方法: 下载安装包-cmd进入解压路径-python setup.py install-报错permission denied-右键安全更改报错文件夹权限为完全控制-再次安装成功unknown error: unable to discover open pages-下载chromedriver放在环境变量目录下测试自动打开百度时提示"您使用的是不受支持的命令

利用Python抓取亚马逊评论列表数据

前段时间,我家妹子公司老板叫她去将法国亚马逊评论列表的前100页共1000个评论用户的联系方式找出来.1000个用户,要一个个的去看再记录下来,而且并不是每个评论用户都会将个人的联系方式留下来.那么问题来了,这样费时费力的工作如果人工去做的话,那么就是花了两天的时间也就找了前30页的数据(还有别的工作要做),然后累的够呛的.本着心疼的原则(程序猿能找到妹子就很不错了,所以得心疼着),就想帮着她做点事. 我本身的工作是做游戏客户端开发的,主要使用的开发语言是lua和c++,并没有接触过网页.网站相

Python开发爬虫之动态网页抓取篇:爬取博客评论数据

以爬取<Python 网络爬虫:从入门到实践>一书作者的个人博客评论为例.网址:http://www.santostang.com/2017/03/02/hello-world/ 1)"抓包":找到真实的数据地址 右键点击"检查",点击"network",选择"js".刷新一下页面,选中页面刷新时返回的数据list?callback....这个js文件.右边再选中Header.如图: 其中,Request URL即

Python爬虫入门教程 33-100 电影评论数据抓取 scrapy

1. 海王评论数据爬取前分析 海王上映了,然后口碑炸了,对咱来说,多了一个可爬可分析的电影,美哉~ 摘录一个评论 零点场刚看完,温导的电影一直很不错,无论是速7,电锯惊魂还是招魂都很棒.打斗和音效方面没话说非常棒,特别震撼.总之,DC扳回一分( ̄▽ ̄).比正义联盟好的不止一点半点(我个人感觉).还有艾梅伯希尔德是真的漂亮,温导选的人都很棒.真的第一次看到这么牛逼的电影 转场特效都吊炸天 2. 海王案例开始爬取数据 数据爬取的依旧是猫眼的评论,这部分内容咱们用把牛刀,scrapy爬取,一般情况下,