作为一个PUBG迷,刷论坛是每天必不可少的事,上面有很多技术贴和职业比赛的帖子,突发奇想,想知道论坛里谈论最多的是什么,便做了一个爬虫爬取了论坛上最新的帖子标题和部分回复,然后利用jieba与wordcloud进行分词然后做了一个词云图。
爬虫的构建与数据的爬取
首先导入制作爬虫需要的包:
from bs4 import BeautifulSoup
import requests
import pandas as pd
import chardet
import numpy as np
生成爬虫的函数:
'''
creat beautifulsoup
'''
def creat_bs(url):
result = requests.get(url)
e=chardet.detect(result.content)['encoding']
#set the code of request object to the webpage's code
result.encoding=e
c = result.content
soup=BeautifulSoup(c,'lxml')
return soup
这里利用了chardet.detect
自动检测所获取网页内容的编码并转化,防止request识别错误。
接着构建所要获取网页的集合函数:
'''
build urls group
'''
def build_urls(prefix,suffix):
urls=[]
for item in suffix:
url=prefix+item
urls.append(url)
return urls
接下来便可以开始获取论坛帖子标题与帖子链接,首先观察一下PUBG论坛首页的html代码:
可以看到我们要爬取的帖子标题所在的<b></b>
标签,但是html的常识告诉我,这个标签表示加粗,从左边的网页显示也可以看出字体被加粗了。我们再往下看:
没有加粗的标题并没有<b></b>
标签。看清了网页的代码,便可以开始编写爬虫了:
'''
acquire all the page titles and links and save it
'''
def find_title_link