初始条件,具体可见我的其他文章。
1.安装Python。Python 学习笔记 第一篇 Python的安装与配置
2.安装Pycharm,并导入第三方包。Python 学习笔记 第二篇 Python IDE安装(二)--PyCharm安装及使用教程
3.安装MySQL。MySQL安装和配置图解
4.下载 chromedriver.exe,并将运行程序目录添加到环境变量中。win系统下下载chromedriver.exe驱动的步骤
(一)创建 search.py
from selenium import webdriver
import pymysql
import time
conn = pymysql.connect(
host = 'localhost',
port = 3306,
user = 'root',
passwd = 'root',
db = 'study',
charset='utf8mb4'
)
cursor = conn.cursor()
# 隐藏浏览器
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless') # 给设置 的属性添加headless属性,使浏览器隐藏起来,不弹出。
driver = webdriver.Chrome("chromedriver.exe", options=chrome_options)
url = "https://music.163.com/#/song?id=411349966"
driver.get(url)
# 切换到对应的ifame标签里
driver.switch_to_frame('g_iframe')
for i in range(1, 500):
driver.execute_script("var q=document.documentElement.scrollTop=5000")
#定义class名字为cnt f-brk的div标签
nodes = driver.find_elements_by_xpath('//div[@class="cnt f-brk"]')
for node in nodes:
sql = 'insert into wyy values(%s)'
cursor.execute(sql, [node.text])
conn.commit()
# 定义text名字为 下一页 的a标签 selenium元素定位之xpath定位详解
a = driver.find_element_by_xpath('//a[text()="下一页"]') # 筛选文本内容为下一页的a标签
a.click() # 点击该标签
time.sleep(1) # 点击下一页之后休眠两秒,等待页面加载
print('第{}页评论爬取完成'.format(i))
(二)创建 show.py
import pymysql
import jieba
import wordcloud
import numpy as np
from PIL import Image # pillow
conn = pymysql.connect(
host = 'localhost',
port = 3306,
user = 'root',
passwd = 'root',
db = 'study',
charset='utf8mb4'
)
cursor = conn.cursor()
sql = 'select * from wyy'
cursor.execute(sql)
pingluns = cursor.fetchall()
fenci = []
for pinglun in pingluns:
fenci += jieba.lcut(pinglun[0].split(':')[-1])
s = ' '.join(fenci).replace('\n', ' ')
print(s)
mask = np.array(Image.open('timg_meitu_1.jpg'))
w = wordcloud.WordCloud(font_path='C:\Windows\Fonts\方正粗宋简体.ttf',scale=4,background_color='white',mask=mask)
w.generate(s)
w.to_file('musicpl.jpg')
(三)结果输出到 musicpl.jpg
(四)可能存在的问题
1.爬虫过程中,出现特殊字符数据库插入数据报错 pymysql.err.DataError: (1366, "Incorrect string value: '\\xF0\\x9F\\x8E\\xB5\\xE9\\x9F...'
解决方法:修改数据库表的编码为utf8mb4
第一步:打开命令行
1)方法一:在Mysql安装目录下打开按住shift之后右键文件夹会出现在此处打开命令窗口,不按shift不会出现
2)方法二:win+R 输入 cmd 打开运行,输入 cd + 在Mysql安装目录 切换到Mysql安装目录
第二步:输入 mysql -uroot -p 命令进入数据库。
第三步:输入 命令use 数据库名;
进入数据库 ,输入命令 alter table 表名 convert to character set utf8mb4;