网站首页 > 技术文章 正文
总流程概述:
- 创建编码文件
- 导入第三方模块
- 编写函数test()用来爬取数据
- 测试函数test()
1.创建Python文件
创建一个名为demo.py的Python文件
2.导入模块
在demo.py中导入模块。
import requests
from bs4 import BeautifulSoup
如果导入模块报错,例如:
ModuleNotFoundError: No module named 'bs4'
可能是因为当前环境没有安装对应的模块,可以尝试使用pip安装对应的模块
# 安装 requests模块
pip install requests
# 安装 bs4模块
pip install bs4
3.编写函数
在demo.py中定义一个函数test(),用来爬取网页数据。代码如下:
import requests
from bs4 import BeautifulSoup
# 豆瓣影单url
douban_url = 'https://movie.douban.com/top250'
# 设置User-Agent标头(模拟浏览器,避免豆瓣屏蔽爬虫程序)
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36'
}
def test(url):
# 获取页面数据
response = requests.get(url, headers=headers, timeout=(5, 10))
# 将页面数据解析为BeautifulSoup对象
soup = BeautifulSoup(response.content, 'html.parser')
# 根据页面html结构,查找所有电影条目
movies = soup.find_all('div', class_='item')
# 遍历每个电影条目
for movie in movies:
# 获取电影编号、片名、导演等信息
num = movie.find('div', class_='pic').em.text
title = movie.find('span', class_='title').string
director_info = movie.find('div', class_='bd').p.text.split('\xa0')
director = None
# 处理导演信息
if len(director_info) > 1:
director = director_info[0].strip().split('导演: ')[1]
director = director.split(' ')
if len(director) > 0:
director = director[0]
else:
director = ''
# 打印电影编号、片名和导演
print(num, ' ', title, ' ', director)
# 测试代码
if __name__ == "__main__":
test(douban_url)
4.运行测试
在Python文件中运行函数,与jupyter中不同。jupyter中可以直接运行,在Python文件中需要使用`if __name__ == "__main__":` 来运行函数。打印结果如下:
1 肖申克的救赎 弗兰克·德拉邦特
2 霸王别姬 陈凯歌
3 泰坦尼克号 詹姆斯·卡梅隆
4 阿甘正传 罗伯特·泽米吉斯
5 千与千寻 宫崎骏
6 美丽人生 罗伯托·贝尼尼
7 这个杀手不太冷 吕克·贝松
8 星际穿越 克里斯托弗·诺兰
9 盗梦空间 克里斯托弗·诺兰
10 楚门的世界 彼得·威尔
11 辛德勒的名单 史蒂文·斯皮尔伯格
12 忠犬八公的故事 莱塞·霍尔斯道姆
13 海上钢琴师 朱塞佩·托纳多雷
14 三傻大闹宝莱坞 拉库马·希拉尼
15 疯狂动物城 拜伦·霍华德
16 放牛班的春天 克里斯托夫·巴拉蒂
17 机器人总动员 安德鲁·斯坦顿
18 无间道 刘伟强
19 控方证人 比利·怀尔德
20 大话西游之大圣娶亲 刘镇伟
21 熔炉 黄东赫
22 触不可及 奥利维·那卡什
23 教父 弗朗西斯·福特·科波拉
24 寻梦环游记 李·昂克里奇
25 当幸福来敲门 加布里尔·穆奇诺
5.问题
上述步骤完成了豆瓣电影网站一页的数据,如何改造为获取多页数据呢?
猜你喜欢
- 2025-05-02 python执行.sql语法和文件(python oracle sql语句跟参数)
- 2025-05-02 python unittest 基本用法(python中testcase)
- 2025-05-02 免费定时运行Python程序并存储输出文档的服务推荐
- 2025-05-02 20 天学 Python 文件操作:Day 1 从 open() 开始
- 2025-05-02 一文掌握Python找到文件操作(python找到文件夹下指定文件)
- 2025-05-02 python 文件操作(python 文件操作模块)
- 2025-05-02 pdb,让python文件在linux中跑起来
- 2025-05-02 IDEA中配置Python环境并运行(idea 运行python)
- 2025-05-02 14《Python 办公自动化教程》os 模块操作文件与文件夹
- 2025-05-02 Python自动化办公自学笔记(八)文件操作
- 261℃Python短文,Python中的嵌套条件语句(六)
- 261℃python笔记:for循环嵌套。end=""的作用,图形打印
- 260℃PythonNet:实现Python与.Net代码相互调用!
- 255℃Python实现字符串小写转大写并写入文件
- 254℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 110℃原来2025是完美的平方年,一起探索六种平方的算吧
- 94℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 87℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)