DrissionPage/docs/9_demos/maoyan_TOP100.md
2023-02-03 00:03:36 +08:00

71 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

这个示例演示用浏览器采集数据。
# ✔️ 采集目标
目标网址:[https://www.maoyan.com/board/4](https://www.maoyan.com/board/4)
采集目标:排名、电影名称、演员、上映时间、分数
---
# ✔️ 编码思路
`F12`,可以看到每个电影信息都包含在`<dd>`元素中,因此可批量获取`<dd>`元素,遍历它们并再从其中获取每个电影的信息。
---
# ✔️ 示例代码
以下代码可直接运行。
须要注意的是,这里用到记录器对象,详见[DataRecorder](http://g1879.gitee.io/datarecorder)。
```python
from DrissionPage import ChromiumPage
from DataRecorder import Recorder
# 创建页面对象
page = ChromiumPage()
# 创建记录器对象
recorder = Recorder('data.csv')
# 访问网页
page.get('https://www.maoyan.com/board/4')
while True:
# 遍历页面上所有 dd 元素
for mov in page.eles('t:dd'):
# 获取须要的信息
num = mov('t:i').text
score = mov('.score').text
title = mov('@data-act=boarditem-click').attr('title')
star = mov('.star').text
time = mov('.releasetime').text
# 写入到记录器
recorder.add_data((num, title, star, time, score))
# 获取下一页按钮,有就点击
if btn := page('下一页', timeout=2):
btn.click(wait_loading=True)
# 没有则退出程序
else:
break
recorder.record()
```
---
# ✔️ 结果
程序生成一个结果文件 data.csv内容如下
```csv
1,我不是药神,"主演:徐峥,周一围,王传君",上映时间2018-07-05,9.6
2,肖申克的救赎,"主演:蒂姆·罗宾斯,摩根·弗里曼,鲍勃·冈顿",上映时间1994-09-10(加拿大),9.5
3,海上钢琴师,"主演:蒂姆·罗斯,比尔·努恩 ,克兰伦斯·威廉姆斯三世",上映时间2019-11-15,9.3
4,绿皮书,"主演:维果·莫腾森,马赫沙拉·阿里,琳达·卡德里尼",上映时间2019-03-01,9.5
5,霸王别姬,"主演:张国荣,张丰毅,巩俐",上映时间1993-07-26,9.4
下面省略。。。
```