Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
BlueLion2
Python
提交
8134a3de
P
Python
项目概览
BlueLion2
/
Python
与 Fork 源项目一致
Fork自
inscode / Python
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Python
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
8134a3de
编写于
4月 26, 2023
作者:
6
6448aef831ba9538b4877d2b
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Auto commit
上级
df352508
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
44 addition
and
0 deletion
+44
-0
douban_top.py
douban_top.py
+44
-0
未找到文件。
douban_top.py
0 → 100644
浏览文件 @
8134a3de
import
requests
import
re
# 抓取豆瓣电影TOP250的电影名称、导演、上映年份、电影评分以及评分人数等信息并保存到csv文件中
def
main
():
headers
=
{
'User-Agent'
:
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36"
}
# step1 提取PageSource
f
=
open
(
"douban_TOP.csv"
,
encoding
=
"utf-8"
,
mode
=
"w"
)
f
.
write
(
"电影名称,导演,上映年份,电影评分,评分人数
\n
"
)
# 写入表头
for
page
in
range
(
1
,
11
):
url
=
f
"https://movie.douban.com/top250?start=
{
25
*
(
page
-
1
)
}
"
resp
=
requests
.
get
(
url
,
headers
=
headers
)
resp
.
encoding
=
"utf-8"
# 确定编码格式
PageSource
=
resp
.
text
# step2 编写正则表达式
# re.S可以让正则中的.匹配换行符
obj
=
re
.
compile
(
r
'<div class="item">.*?<span class="title">(?P<name>.*?)</span>.*?<p class="">.*?导演: (?P<director>.*?) .*?<br>(?P<year>.*?) .*?<span class="rating_num" property="v:average">(?P<score>.*?)</span>.*?<span>(?P<num>.*?)人评价</span>'
,
re
.
S
)
# step3 提取数据
content
=
obj
.
finditer
(
PageSource
)
for
item
in
content
:
name
=
item
.
group
(
"name"
)
director
=
item
.
group
(
"director"
).
strip
()
year
=
item
.
group
(
"year"
)
score
=
item
.
group
(
"score"
)
num
=
item
.
group
(
"num"
)
f
.
write
(
f
"
{
name
}
,
{
director
}
,
{
year
}
,
{
score
}
,
{
num
}
\n
"
)
# step4 存储数据
print
(
f
"已经爬起了第
{
page
}
页"
)
# step5 收尾工作
f
.
close
()
resp
.
close
()
if
__name__
==
'__main__'
:
main
()
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录