mport requests from bs4 import BeautifulSoup import csv def get_top250_movies(): url = 'https://movie.douban.com/top250' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} movie_info_list = [] for i in range(0, 250, 25): params = {'start': str(i)} res = requests.get(url, headers=headers, params=params) soup = BeautifulSoup(res.text, 'html.parser') movie_list = soup.find_all('div', class_='info') for movie in movie_list: title = movie.find('span', class_='title').text info = movie.find('div', class_='bd').p.text.strip().split('\n') director = info[0][4:] actors = info[1][3:] year = info[1][-5:-1] rating = movie.find('span', class_='rating_num').text comment_num = movie.find('div', class_='star').find_all('span')[3].text[:-3] movie_info_list.append([title, director, actors, year, rating, comment_num]) return movie_info_list def save_to_csv(movie_info_list): with open('movie_info.csv', 'w', newline='', encoding='utf-8-sig') as f: writer = csv.writer(f) writer.writerow(['电影名称', '导演', '演员', '上映年份', '评分', '评论数']) for movie_info in movie_info_list: writer.writerow(movie_info) if name == 'main': movie_info_list = get_top250_movies() save_to_csv(movie_info_list) print('电影信息保存成功!') 在此代码的基础上对爬取的电影类型进行生成按照评分生成词云
时间: 2023-06-26 20:08:59 浏览: 42
可以使用Python中的wordcloud库来生成词云。首先需要安装该库,可以使用以下命令进行安装:
```
pip install wordcloud
```
然后在获取电影信息的代码中添加以下代码:
```python
from wordcloud import WordCloud
import matplotlib.pyplot as plt
# 从电影信息中获取所有电影类型
genre_list = []
for movie_info in movie_info_list:
genres = movie_info[2].split('/')
genre_list.extend(genres)
# 生成词云
wordcloud = WordCloud(background_color='white', width=800, height=400).generate(' '.join(genre_list))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()
```
这段代码将所有电影类型存储在一个列表中,然后使用WordCloud生成词云图并显示。可以根据需要调整词云的参数,例如背景颜色、大小等。最终生成的词云图可以使用Matplotlib库进行显示。
相关问题
mport requests from lxml import etree import csv import time import pyecharts from pyecharts import options as opts from pyecharts.options import * #导入的是一个模块中的所有类 from pyecharts.charts import Bar from pyecharts.globals import ThemeType from bs4 import BeautifulSoup from selenium.webdriver import Chrome
这段代码导入了以下模块:
- `requests`:用于发送 HTTP 请求。
- `lxml` 和 `BeautifulSoup`:用于解析 HTML 和 XML。
- `csv`:用于读写 CSV 文件。
- `time`:用于处理时间。
- `pyecharts`:一个基于 Python 的数据可视化库。
- `Bar`:用于生成柱状图。
- `ThemeType`:用于设置图表主题。
- `Chrome`:用于操作 Chrome 浏览器。
2023/5/31 16:01:36 mport requests url = "https://swa.apple.com:443/api/v1.0/external/authEntityRequests" pem = r"D:\bob_porject\ibeelink-apple-mfi\ibeelink-application\src\main\java\com\bob\ibeelink\apple\mfi\application\service\impl\MFi-gSccDMIpR_e_vXRs9QEXDA.cert.pem" key = r"D:\bob_porject\ibeelink-apple-mfi\ibeelink-application\src\main\java\com\bob\ibeelink\apple\mfi\application\service\impl\test.key" data = { "ppid": "988616-546718", "requested_auth_entity_count": 10 } headers = {"Accept": "application/json", "Content-Type": "application/json"} res = requests.post(url, json=data, headers=headers, cert=(pem, key), ) print(res.text) 请将上述代码转为springboot2.5.14与JDK1.8版本的代码
好的,以下是将上述代码转换为Spring Boot 2.5.14和JDK 1.8的代码:
首先,需要将Python中用于发送HTTP请求的`requests`库替换为Java中的`HttpClient`库。同时,需要使用Java中的`KeyStore`类和`SSLContext`类来加载证书和构建SSL上下文。代码如下:
```
import java.io.FileInputStream;
import java.net.URI;
import java.security.KeyStore;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLParameters;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.springframework.stereotype.Service;
@Service
public class AppleService {
public void postRequest() throws Exception {
String url = "https://swa.apple.com:443/api/v1.0/external/authEntityRequests";
String pemPath = "D:\\bob_porject\\ibeelink-apple-mfi\\ibeelink-application\\src\\main\\java\\com\\bob\\ibeelink\\apple\\mfi\\application\\service\\impl\\MFi-gSccDMIpR_e_vXRs9QEXDA.cert.pem";
String keyPath = "D:\\bob_porject\\ibeelink-apple-mfi\\ibeelink-application\\src\\main\\java\\com\\bob\\ibeelink\\apple\\mfi\\application\\service\\impl\\test.key";
String ppid = "988616-546718";
int count = 10;
String json = String.format("{\"ppid\": \"%s\", \"requested_auth_entity_count\": %d}", ppid, count);
// 加载证书
KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
keystore.load(null, null);
CertificateFactory cf = CertificateFactory.getInstance("X.509");
FileInputStream pemStream = new FileInputStream(pemPath);
X509Certificate cert = (X509Certificate) cf.generateCertificate(pemStream);
keystore.setCertificateEntry("apple", cert);
SSLContext sslContext = SSLContext.getInstance("TLS");
KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
FileInputStream keyStream = new FileInputStream(keyPath);
KeyStore keyStore = KeyStore.getInstance("PKCS12");
keyStore.load(keyStream, "password".toCharArray());
kmf.init(keyStore, "password".toCharArray());
sslContext.init(kmf.getKeyManagers(), null, null);
// 构建HTTP客户端
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext, new String[]{"TLSv1.2"}, null,
SSLConnectionSocketFactory.getDefaultHostnameVerifier());
HttpClient httpClient = HttpClients.custom().setSSLSocketFactory(sslsf).build();
HttpPost httpPost = new HttpPost();
httpPost.setURI(new URI(url));
httpPost.setHeader("Accept", "application/json");
httpPost.setHeader("Content-Type", "application/json");
httpPost.setEntity(new StringEntity(json, ContentType.APPLICATION_JSON));
// 发送HTTP请求
HttpResponse response = httpClient.execute(httpPost);
HttpEntity entity = response.getEntity();
String responseText = EntityUtils.toString(entity);
System.out.println(responseText);
}
}
```
需要注意的是,代码中的证书路径和密码、请求参数等都需要根据实际情况进行修改。