求Python selenium爬取影评生成词云图

from selenium import webdriver
for selenium.webdriver.common.by import By
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import numpy
from PIT import Image
from os import path
利用以上代码实现 Python selenium爬取生成词云图

引用chatgpt部分指引作答:
你的代码有一些错误和问题。这里提供一种修正后的代码示例,它可以使用Python的Selenium库来爬取影评,并生成词云图。

首先,确保你已经安装了selenium、jieba、wordcloud和matplotlib这些库。你可以使用pip命令进行安装,如下所示:

pip install selenium jieba wordcloud matplotlib

接下来,你可以使用下面的代码作为参考,来实现爬取影评并生成词云图:

from selenium import webdriver
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt

# 设置浏览器驱动路径,根据你的实际情况修改
driver_path = 'path/to/your/chromedriver'

# 创建浏览器驱动对象
driver = webdriver.Chrome(executable_path=driver_path)

# 打开目标网页
url = 'https://example.com'  # 替换为你要爬取的影评网页地址
driver.get(url)

# 等待网页加载完成
# 这里可以根据需要使用不同的等待方式,比如等待某个元素的出现
driver.implicitly_wait(10)

# 获取影评文本
reviews = driver.find_elements_by_xpath('//div[@class="review-text"]')
text = '\n'.join([review.text for review in reviews])

# 关闭浏览器
driver.quit()

# 对影评文本进行分词
seg_list = jieba.cut(text)

# 统计词频
word_counts = {}
for word in seg_list:
    if len(word) > 1:  # 过滤掉长度小于等于1的词
        word_counts[word] = word_counts.get(word, 0) + 1

# 生成词云图
wordcloud = WordCloud(font_path='path/to/your/font.ttf').generate_from_frequencies(word_counts)

# 显示词云图
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()

在上面的代码中,你需要将path/to/your/chromedriver替换为你的Chrome驱动程序的路径。另外,你还需要将https://example.com替换为你要爬取的影评网页的地址。

该代码使用Selenium库打开指定的网页,获取影评文本,并使用jieba库进行分词。然后,根据词频生成词云图,并使用matplotlib库显示词云图。

请注意,根据你的需求和实际情况,你可能需要对代码进行一些适当的修改和调整。

可参考

//设置浏览器驱动的路径
driver_path = 'chromedriver.exe'
//创建浏览器对象
driver = webdriver.Chrome(driver_path)
//打开网页
driver.get('https://www.baidu.com')
//找到搜索框并输入关键词
search_box = driver.find_element(By.ID, 'kw')
search_box.send_keys('Python')
//找到搜索按钮并点击
search_button = driver.find_element(By.ID, 'su')
search_button.click()
//等待页面加载完成
driver.implicitly_wait(10)
//获取搜索结果的文本
search_result = driver.find_element(By.ID, 'content_left').text
//关闭浏览器
driver.quit()
//使用 jieba 分词
words = jieba.cut(search_result)
//将分词结果转换为字符串
words_str = ' '.join(words)
//生成词云图
wordcloud = WordCloud(font_path='msyh.ttc', background_color='white', width=800, height=600).generate(words_str)
//显示词云图
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()

import requests
from bs4 import BeautifulSoup
import xlwt
import random
import jieba
import plotWordcloud

def main(page, quote_list):
    url = 'https://movie.douban.com/top250?start=' + str(page * 25) + '&filter='
    html = request_douban(url)
    soup = BeautifulSoup(html, 'lxml')
    inq_list = soup.find_all(class_='inq')
    content = ''
    for i in range(len(inq_list)):
        quote_list.append(inq_list[i].text)

def get_user_agent():
    USER_AGENTS = [
        "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Media Center PC 6.0)",
        "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.0.3705; .NET CLR 1.1.4322)",
        "Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30)",
        "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3) Arora/0.3 (Change: 287 c9dfb30)",
        "Mozilla/5.0 (X11; U; Linux; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3) Arora/0.6",
        "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2pre) Gecko/20070215 K-Ninja/2.1.1",
        "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/20080705 Firefox/3.0 Kapiko/3.0",
        "Mozilla/5.0 (X11; Linux i686; U;) Gecko/20070322 Kazehakase/0.4.5"
    ]
    user_agent = random.choice(USER_AGENTS)
    return user_agent

def request_douban(url):
    try:
        session = requests.session()
        session.headers = {'User-Agent':get_user_agent()}
        response = session.get(url)
        if response.status_code == 200:
            return response.text
    except requests.RequestException:
        return None

if __name__ == '__main__':
    quote_list = []
    for i in range(0, 10):
        main(i, quote_list)
    data_cut = [' '.join(jieba.lcut(i)) for i in quote_list]
    # 生成词云
    plotWordcloud.generate_wordcloud(' '.join(data_cut))

望采纳,您的支持就是对我最大的动力


from selenium import webdriver
from selenium.webdriver.common.by import By
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image
from os import path

# 设置 Chrome 浏览器驱动的路径
chrome_driver_path = '/path/to/chromedriver'

# 创建 Chrome 浏览器驱动对象
driver = webdriver.Chrome(executable_path=chrome_driver_path)

# 打开网页
driver.get('https://example.com')

# 等待网页加载完成
driver.implicitly_wait(10)

# 获取网页内容
page_content = driver.page_source

# 关闭浏览器驱动
driver.quit()

# 使用 jieba 进行中文分词
text = ' '.join(jieba.cut(page_content))

# 生成词云图
mask = np.array(Image.open("mask_image.png"))  # 词云形状图片的路径
wordcloud = WordCloud(
    font_path='font.ttf',  # 字体文件路径
    mask=mask,  # 词云形状图片
    background_color='white',  # 背景颜色
).generate(text)

# 绘制词云图
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()

代码中的路径需要根据实际情况进行修改:
chrome_driver_path:Chrome 浏览器驱动的路径,请指定正确的驱动路径。
driver.get('https://example.com'):将 URL 更改为你想要爬取的网页地址。
mask = np.array(Image.open("mask_image.png")):将 mask_image.png 替换为你自己的词云形状图片的路径。
font_path='font.ttf':将 font.ttf 替换为你自己的字体文件路径。
此外,还需要安装相应的 Python 库:

Selenium:pip install selenium
jieba:pip install jieba
wordcloud:pip install wordcloud
matplotlib:pip install matplotlib
numpy:pip install numpy
PIL:pip install Pillow

根据提供的代码,实现Python使用Selenium进行网页爬取并生成词云图的过程如下:

  1. 首先,确保已经安装了所需的Python库,包括Selenium、jieba、wordcloud、matplotlib和numpy。可以使用pip命令进行安装。
  2. 导入所需的库和模块,包括:
    from selenium import webdriver
     from selenium.webdriver.common.by import By
     import jieba
     from wordcloud import WordCloud
     import matplotlib.pyplot as plt
     import numpy
     from PIL import Image
     from os import path
     
  3. 创建一个WebDriver对象,选择适合的浏览器驱动程序,例如ChromeDriver:
    driver = webdriver.Chrome('chromedriver路径')
     
  4. 使用WebDriver对象打开目标网页:
    driver.get('目标网页URL')
     
  5. 使用Selenium提供的方法来定位和获取网页上的文本信息,例如使用find_element(By.XPATH, 'XPath表达式').text获取元素的文本内容。
  6. 使用jieba库对获取的文本进行分词处理:
    text = "获取的文本内容"
     words = jieba.cut(text)
     
  7. 将分词结果转换为字符串:
    word_list = ' '.join(words)
     
  8. 创建一个WordCloud对象,并根据分词结果生成词云图:
    wc = WordCloud(font_path='字体文件路径').generate(word_list)
     
  9. 可以根据需要对词云图进行一些自定义设置,如设置背景颜色、字体颜色等。
  10. 使用matplotlib库显示生成的词云图:
<pre><code class="!whitespace-pre hljs language-python">plt.imshow(wc, interpolation=<span class="hljs-string">'bilinear'</span>)
plt.axis(<span class="hljs-string">'off'</span>)
plt.show()
</code></pre>
  1. 最后,关闭WebDriver对象:
<pre><code class="!whitespace-pre hljs language-python">driver.quit()
</code></pre>

请注意,上述代码仅提供了一个大致的流程,具体的实现还需要根据您的需求进行进一步的调整和完善。

效果图如下 :

img

用的是 李焕英的影评 https://movie.douban.com/subject/34841067/comments?status=P ,

下午我把 代码分析写完 ,给你代码哈