import requests import re # from bs4 import BeautifulSoup import matplotlib.pyplot as plt import numpy as np # import pandas as pd i = 1 lists = [0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 250] title = [] year = [] country = [] score = [] number = [] for page in range(0, 226, 25): url = 'https://movie.douban.com/top250?start=' + str(page) + '&filter=' headers = { 'User-Agent': "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"} resp = requests.get(url=url, headers=headers) resp.encoding = "utf-8" pattern = re.compile( r'<div class="pic">.*? < img width="100" alt="(?P<title>.*?)".*?class="">.*?<a href="(?P<URL>.*?)" class="">.*?导演: (?P<director>.*?) .*?<br>.*?(?P<year>.*?) / (?P<country>.*?) .*?"v:average">(?P<score>.*?)</span>.*?<span>(?P<number>.*?)人评价</span>', re.S) pic_url = re.compile(r'< img width="100".*?src="(.*?)" class="">', re.S) pic_URl = pic_url.findall(resp.text) data2 = pattern.finditer(str(resp.text)) for url1 in pic_URl: file1 = open('films.pic\\' + str(i) + '.jpg', 'ab') Pic = requests.get(url1) file1.write(Pic.content) i = i + 1 file1.close() file2 = open('movie.text', 'a+', encoding='utf-8') for m in data2: if int(m['number']) / 100000 > 13: number.append(int(m['number']) / 100000) country.append(m['country']) year.append(m['year']) title.append(m['title']) score.append(m['score']) file2.write( '电影名:' + m['title'] + ', 导演:' + m['director'] + ', 年份:' + m['year'] + ', 国家:' + m['country'] + ', 评分:' + m[ 'score'] + ',评价人数:' + str(int(m['number']) / 100000) + ' 100k') file2.write('\n') print( '电影名:' + m['title'] + ', 导演:' + m['director'] + ', 年份:' + m['year'] + ', 国家:' + m['country'] + ', 评分:' + m[ 'score'] + ',评价人数:' + str(int(m['number']) / 100000) + ' 100k')
时间: 2024-04-04 22:35:23 浏览: 78
你的代码是用Python爬取豆瓣电影Top250页面的电影信息。其中使用了requests模块向网页发送请求,re模块提取信息,以及matplotlib和numpy模块进行数据可视化。具体而言,代码中通过循环访问Top250页面的不同分页,使用正则表达式匹配页面中的电影信息,并将其存储到title、year、country、score和number等列表中。同时,还将每部电影对应的海报图片下载到本地。最后,将电影信息写入到文件中,并打印输出。
相关问题
请帮我解释一下这段代码:import requests from bs4 import BeautifulSoup import time import pymysql import pandas as pd import numpy as np import matplotlib.pyplot as plt from travel_save_file import * import re for page in range(1,200): print(page) time.sleep(
这段代码是一个Python脚本,主要功能是爬取一个旅游网站的数据,并将数据存储到MySQL数据库中。具体解释如下:
1. `import`语句用来导入需要用到的Python模块,包括`requests`、`bs4`、`time`、`pymysql`、`pandas`、`numpy`、`matplotlib.pyplot`、`travel_save_file`和`re`。
2. `for`循环用来遍历旅游网站的200个页面,每次循环都会爬取一个页面的数据。
3. `print`语句用来输出当前循环的页面数。
4. `time.sleep()`函数用来控制爬取每个页面之间的时间间隔,避免爬取过快被网站封IP。
5. `requests.get()`函数用来向旅游网站发送GET请求,获取页面的HTML源代码。
6. `BeautifulSoup`模块用来解析HTML源代码,提取需要的数据。
7. `re`模块用来进行正则表达式匹配,提取需要的数据。
8. `pymysql`模块用来连接MySQL数据库,并将数据存储到数据库中。
9. `pandas`和`numpy`模块用来处理数据,例如将数据转换为DataFrame格式,进行数据筛选和统计等操作。
10. `matplotlib.pyplot`模块用来绘制数据图表,展示数据分布和趋势等信息。
11. `travel_save_file`模块是自定义的模块,用来将爬取到的数据存储到本地文件中。
import pandas as pd import requests from bs4 import BeautifulSoup import matplotlib.pyplot as plt # 获取网页代码 url = 'https://www.kylc.com/stats/global/yearly_overview/g_gdp.html' html = requests.get(url).text # 解析网页代码并提取数据 soup = BeautifulSoup(html, 'html.parser') table = soup.find_all('table')[0] df = pd.read_html(str(table))[0] # 将数据框写入CSV文件中 df.to_csv('数据获取-第3组-数据.csv', index=False)怎么将数据中所有数字转化成整型
可以使用 pandas 库中的 `astype()` 方法将数据框中的所有数字转化为整型,示例如下:
```python
# 将数据框中的所有数字转化为整型
df = df.astype(int)
```
这样就可以将数据框中的所有数字都转化为整型了。如果数据框中有一些非数字的列,也可以使用 `select_dtypes()` 方法来选择需要转化类型的列,示例如下:
```python
# 将数据框中类型为 float 或 int 的列转化为整型
df.select_dtypes(include=['float', 'int']).astype(int)
```
阅读全文