Python中如何循环爬取猫眼电影标题并存储到TXT文件
然后下一步该爬什么网站,天猫 京东这些么?有没有好的网站教程,教 requests 库和 BeautifulSoup 库爬网站的实例
Python中如何循环爬取猫眼电影标题并存储到TXT文件
3 回复
需求是最大的动力 可以试试爬点小姐姐
import requests
from bs4 import BeautifulSoup
import time
def get_movie_titles(page):
"""获取单页电影标题"""
url = f'https://maoyan.com/films?offset={(page-1)*30}'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}
try:
response = requests.get(url, headers=headers, timeout=10)
response.raise_for_status()
soup = BeautifulSoup(response.text, 'html.parser')
# 猫眼电影标题选择器(根据实际页面结构调整)
titles = []
movie_items = soup.find_all('div', class_='movie-item')
for item in movie_items:
title_tag = item.find('div', class_='movie-title')
if title_tag:
titles.append(title_tag.text.strip())
return titles
except Exception as e:
print(f"第{page}页抓取出错: {e}")
return []
def save_to_txt(titles, filename='maoyan_movies.txt'):
"""保存标题到TXT文件"""
with open(filename, 'a', encoding='utf-8') as f:
for title in titles:
f.write(title + '\n')
def main():
total_pages = 5 # 要爬取的页数
all_titles = []
for page in range(1, total_pages + 1):
print(f"正在爬取第{page}页...")
titles = get_movie_titles(page)
if titles:
all_titles.extend(titles)
save_to_txt(titles)
print(f"第{page}页爬取完成,获得{len(titles)}个标题")
else:
print(f"第{page}页未获取到数据")
time.sleep(1) # 礼貌爬取,避免被封
print(f"\n全部完成!共爬取{len(all_titles)}个电影标题")
print(f"数据已保存到 maoyan_movies.txt")
if __name__ == '__main__':
main()
核心要点:
- 用
requests发起请求,注意添加User-Agent头 BeautifulSoup解析HTML,根据实际页面结构调整选择器- 循环爬取多页,每页间隔1秒避免被封
- 使用追加模式写入TXT文件,避免覆盖之前数据
实际使用时需要:
- 检查猫眼网站的实际HTML结构,可能需要调整
movie-item和movie-title的选择器 - 如果遇到反爬,可能需要添加更多请求头或使用代理
- 考虑异常处理,比如网络错误、页面结构变化等
一句话建议:记得检查网站结构并设置合理的爬取间隔。
抓今日头条首页的新闻呗

