鱼C论坛

 找回密码
 立即注册
查看: 2164|回复: 4

腾讯影评爬取过程中表情符号如何删掉

[复制链接]
发表于 2019-7-13 00:06:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
https://video.coral.qq.com/varti ... 6429604898339128540
上面是我要爬取的网页,每次只要遇到表情符号程序就会报错,我试了网上的emijo包,不知到为什么不能用,还试了网上其他一些方法,也都不行,请大佬们帮我看看怎么样才能只输出评论的内容,在这里谢谢
了!
下面是我的代码,有点简陋

# -*- coding: utf-8 -*-

import urllib.request
import re
import urllib.error
import sys
import emoji

headers = ("User-Agent",
           "Mozilla/5.0(Windows NT 6.1;WOW64) AppleWebKit/537.36(KHTML, like Gecko) Chrome/49.0.2623.22 Safari/537.36 SE 2.X MetaSr 1.0")
openr = urllib.request.build_opener()
urllib.request.install_opener(openr)
url="https://video.coral.qq.com/varticle/2904111363/comment/v2?callback=_varticle2904111363commentv2&orinum=10&oriorder=o&pageflag=1&cursor=6429604898339128540"


for i in range(0, 1):
    data = urllib.request.urlopen(url).read().decode()
    #emoji.demojize(str)
    #highpoints = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')
    #nickname = highpoints.sub(u'',data)
    patcom = '"content":"(.*?)",'
    patcom1 = '"last":"(.*?)",'
    comdata1 = re.compile(patcom1).findall(data)
    print(comdata1[0])
    comdata = re.compile(patcom).findall(data)
    for j in range(0, len(comdata)):
        print(eval('u"'+comdata[j]+'"'))
        with open('海王.txt','a',encoding='utf8') as file:
            file.write(comdata[j]+'\n')#这样才能转编码格式
            #file.write(comdata[j].encode().decode('unicode-escape')+'\n')#这样才能转编码格式
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-7-13 08:45:49 | 显示全部楼层
这个返回值不是一个标准的json格式文档(也许是故意为之)
就只好用正则了,你看一下 是不是你要的数据:

  1. # coding: utf-8
  2. import requests,re


  3. if __name__ == '__main__':
  4.   url="https://video.coral.qq.com/varticle/2904111363/comment/v2?callback=_varticle2904111363commentv2&orinum=10&oriorder=o&pageflag=1&cursor=6429604898339128540"
  5.   headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'}
  6.   response = requests.get(url=url,headers=headers)
  7.   data=response.text
  8.   content=re.findall(""content":"(.+?)"",data)
  9.   for x in content:print(x)


  10. '''
  11. e:\>python ex14.py
  12. 既然海王刀枪不入,那他身上的纹身是怎么回事……
  13. 惊艳到我了,DC终于下狠功夫了。
  14. 不及格!剧情太扯不符合逻辑,科技那么发达选领导人还靠决斗?我还以为兽人部落选大酋长呢。人类生死存亡寄托在敌人的良心和几个反对者身上,人类尊严呢??至于什么隐藏价值观更是他妈扯淡!老子花钱不是去瞻仰导演编剧伟大三观的。
  15. 难道就我觉得拿三叉戟都时候不应该对祖先拜一拜再双手拿嘛?这直接一只手甩过去祖先尸骨直接灰飞烟灭有点大不敬的感觉。。。
  16. 这不是龙妈第一任老公马王吗?
  17. 弟弟好惨,王位没了,未婚妻也没了
  18. 很期待这部大片🔱不知道腾讯啥时候上映😥
  19. 这部电影海王,全程无尿点,确实好看。画面太美
  20. 我是冲着/史蒂文-亚当斯/来的
  21. 要真有这类人天下无敌。
  22. '''
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-13 11:14:01 | 显示全部楼层
wp231957 发表于 2019-7-13 08:45
这个返回值不是一个标准的json格式文档(也许是故意为之)
就只好用正则了,你看一下 是不是你要的数据:
...

你好,为什么我用你的程序爬还是表情符号那里会跳出出现问题,为什么你表情符号能直接转为&#128305,是我有什么包没装吗还是编译器的问题

<class 'str'>
既然海王刀枪不入,那他身上的纹身是怎么回事……
惊艳到我了,DC终于下狠功夫了。
本片感觉就是拿了一个铜粪叉的海鱼人来到陆地上找了个男人生了个男孩,然后这个男孩还有个哥哥,这个哥哥是拿银粪叉的,人鱼把铜粪叉给了和人类生的男孩,之后他哥哥就用银粪叉欺负他!在之后这个男孩找到了一把金粪叉,打败了他哥哥,,,就成了海王,\n故事总结:三个粪叉一台戏!
不及格!剧情太扯不符合逻辑,科技那么发达选领导人还靠决斗?我还以为兽人部落选大酋长呢。人类生死存亡寄托在敌人的良心和几个反对者身上,人类尊严呢??至于什么隐藏价值观更是他妈扯淡!老子花钱不是去瞻仰导演编剧伟大三观的。
难道就我觉得拿三叉戟都时候不应该对祖先拜一拜再双手拿嘛?这直接一只手甩过去祖先尸骨直接灰飞烟灭有点大不敬的感觉。。。
这不是龙妈第一任老公马王吗?
弟弟好惨,王位没了,未婚妻也没了
Traceback (most recent call last):
  File "C:/Users/admin/Desktop/豆瓣影评/海王2.py", line 12, in <module>
    for x in content:print(x)
UnicodeEncodeError: 'UCS-2' codec can't encode characters in position 7-7: Non-BMP character not supported in Tk
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-13 11:52:29 | 显示全部楼层
LUYAO123 发表于 2019-7-13 11:14
你好,为什么我用你的程序爬还是表情符号那里会跳出出现问题,为什么你表情符号能直接转为&#128305,是我 ...

我这里没有出现你说的这个情况:

你试一试这个代码呢?

  1. # coding: utf-8
  2. import requests,re


  3. if __name__ == '__main__':
  4.   url="https://video.coral.qq.com/varticle/2904111363/comment/v2?callback=_varticle2904111363commentv2&orinum=10&oriorder=o&pageflag=1&cursor=6429604898339128540"
  5.   headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'}
  6.   response = requests.get(url=url,headers=headers)
  7.   data=response.text.encode(encoding="utf-8",errors="ignore")
  8.   content=re.findall(""content":"(.+?)"",data.decode('utf-8'))
  9.   for x in content:print(x)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-13 12:13:43 | 显示全部楼层
还是不行欸,我是用IDLE (Python 3.7 64-bit)这个来运行代码的,其实你给我的代码在我那里运行都会有格式不同的问题,需要改过才可以,我感觉可能是编译器的问题,不过还是谢谢你
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-16 21:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表