论坛评论提取\论坛内容提取\论坛用户信息提取

本文介绍了在泰迪杯数据挖掘竞赛中,通过Python爬虫进行论坛数据提取的方法,包括网页预处理、噪声过滤、内容提取等步骤。使用了jieba分词、BeautifulSoup、selenium等工具,通过删除停用词、处理纯数字噪声,提高了内容提取的准确性。最后,文章提到未来将进一步优化提取准确率和处理不同类型的论坛数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本人长期出售超大量微博数据、旅游网站评论数据,并提供各种指定数据爬取服务,Message to YuboonaZhang@Yahoo.com。同时欢迎加入社交媒体数据交流群:99918768

背景

参加泰迪杯数据挖掘竞赛,这次真的学习到了不少东西,最后差不多可以完成要求的内容,准确率也还行。总共的代码,算上中间的过程处理也不超过500行,代码思想也还比较简单,主要是根据论坛的短文本特性和楼层之间内容的相似来完成的。(通俗点说就是去噪去噪去噪,然后只留下相对有规律的日期,内容)

前期准备

  1. 软件和开发环境: Pycharm,Python2.7,Linux系统

  2. 用的主要Python包: jieba, requests, BeautifulSoup, goose, selenium, PhantomJS, pymongo等(部分软件的安装我前面的博客有介绍)

网页预处理

首先因为网站很多是动态的,直接用bs4是获取不到有些信息的,所以我们使用selenium和phantomjs将文件保存在本地,然后再处理。

相关的代码是

def save(baseUrl):
    driver = webdriver.PhantomJS()
    driver.get(baseUrl) # seconds
    try:
        element = WebDriverWait(driver, 10).until(isload(driver) is True)
    except Exception, e:
        print e
    finally:
        data = driver.page_source  # 取到加载js后的页面content
    driver.quit()
    return data

由于网页中存在着大量的噪音(广告,图片等),首先我们需要将与我们所提取内容不一致的所有噪声尽可能去除。我们首先选择将一些带有典型噪声意义的噪声标签去除,比如script等,方法我们选择BeautifulSoup来完成。

代码大概是这样

    for element in soup(text=lambda text: isinstance(text, Comment)):
        element.extract()

    [s.extract() for s in soup('script')]
    [s.extract() for s in soup('meta')]
    [s.extract() for s in soup('style')]
    [s.extract() for s in soup('link')]
    [s.extract() for s in soup('img')]
    [s.extract() for s in soup('input')]
    [s.extract() for s in soup('br')]
    [s.extract() for s in soup('li')]
    [s.extract() for s in soup('ul')]

    print (soup.prettify())

处理之后的网页对比

之前

之后

可以看出网页噪声少了很多,但是还是不足以从这么多噪声中提取出我们所要的内容

由于我们不需要标签只需要标签里面的文字,所以我们可以利用BeautifulSoup提取出文字内容再进行分析

for string in soup.stripped_strings:
    print(string)
    with open(os.path.join(os.getcwd())+"/data/3.txt", 'a') as f:
        f.writelines(string.encode('utf-8')+'\n')

去除噪声标签之后的信息

可以看出来还是非常杂乱,但是又是十分有规律的。我们可以发现每个楼层中的文本内容实质上都差不多,可以说重复的很多,而且都是一些特定的词,比如: 直达楼层, 板凳,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值