一、前言
在这个小项目中,我们将学习如何使用Python的requests
库和lxml
库来爬取豆瓣电影首页上的电影标题,并将这些标题保存到一个文本文件中。这不仅能够帮助我们了解基本的网页抓取技术,还能让我们熟悉数据处理的基本流程。
二、环境准备
确保你的开发环境中已经安装了以下Python库:
requests
:用于发送HTTP请求。lxml
:用于解析HTML内容。
可以通过pip命令安装它们:
pip install requests
pip install lxml
三、代码实现
3.1 导入所需库
import requests # 导入requests库,用于发送HTTP请求
from lxml import etree # 导入lxml库,用于解析HTML文本
3.2 发送请求并获取响应
爬取豆瓣实例网站:
https://movie.douban.com
url = 'https://movie.douban.com' # 定义要访问的网址
headers = { # 定义请求头,模拟浏览器访问
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36 Edg/117.0.2045.36'
}
response = requests.get(url=url, headers=headers) # 发送GET请求,获取网页内容
3.3 解析网页内容
tree = etree.HTML(response.text) # 使用lxml解析网页内容
3.4 提取电影标题
按F12打开开发者工具,再点击选取元素工具选中元素即可出现特定的抓取数据
使用XPath提取特定位置的图片alt属性中的电影标题。
titles = tree.xpath('/html/body/div[3]/div[1]/div/div[2]/div[1]/div[2]/ul/li/ul/li/a/img/@alt') # 提取网页中的标题
3.5 保存结果
with open('./douban_titles.txt', 'w', encoding='utf-8') as fp:
# 打开一个文件,用于存储提取到的标题,其中'./douban_titles.txt'代表的是在当前目录下生成的文档
for title in titles: # 遍历标题列表
fp.write(f"{title}\n") # 将标题写入文件
print(title) # 打印标题
四、运行结果
749局
只此青绿
志愿军:存亡之战
出走的决心
浴火之路
门前宝地
变形金刚:起源
熊猫计划
危机航线
爆款好人
荒野机器人
里斯本丸沉没
出入平安
非礼勿言
重生
逆行人生
姥姥的外孙
刺猬
抓娃娃
野孩子
富都青年
异形:夺命舰
祝你幸福!
一雪前耻
大场面
新大头儿子和小头爸爸6:迷你大冒险
皮皮鲁和鲁西西之309暗室
名侦探柯南:百万美元的五棱星
解密
通往夏天的隧道,再见的出口
全员嫌疑人
食神
白蛇:浮生
奇妙萌可大电影
开国宴风云
神偷奶爸4
狄仁杰之通天帝国
航海王:强者天下
乡见未晚
森林飞侠
稍微想起一些
靠近维米尔
地球脉动:极境生存
姜子牙
小孩儿
小猪哼唧
床与早餐
夜光藻
OK谢谢再见
洛克和舒尔
最后一聚
大人物
母狮
当你运行上面的代码后,你会看到控制台输出抓取到的电影标题,并且这些标题会被保存到当前目录下的douban_titles.txt
文件中。
五、完整代码及总结
import requests # 导入requests库,用于发送HTTP请求
from lxml import etree # 导入lxml库,用于解析HTML文本
url = 'https://movie.douban.com' # 定义要访问的网址
headers = { # 定义请求头,模拟浏览器访问
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36 Edg/117.0.2045.36'
}
response = requests.get(url=url, headers=headers) # 发送GET请求,获取网页内容
# print(response.text) # 打印网页内容
tree = etree.HTML(response.text) # 使用lxml解析网页内容
titles = tree.xpath('/html/body/div[3]/div[1]/div/div[2]/div[1]/div[2]/ul/li/ul/li/a/img/@alt') # 提取网页中的标题
# 打印提取到的标题
with open('./douban_titles.txt', 'w', encoding='utf-8') as fp: # 打开一个文件,用于存储提取到的标题
for title in titles: # 遍历标题列表
fp.write(f"{title}\n") # 将标题写入文件
print(title) # 打印标题
通过这个简单的例子,我们学会了如何利用Python进行基本的网络爬虫操作。这只是一个起点,实际应用中可能需要处理更复杂的网页结构和反爬策略。希望你能通过实践进一步探索网络爬虫的世界!