编写一个爬虫,爬取豆瓣电影top250,并为每一行代码添加注释且保存为txt文件
时间: 2024-02-12 14:03:21 浏览: 109
好的,我可以编写一个爬虫示例,爬取豆瓣电影 top250 并将其保存为 txt 文件。以下是代码,我会为每一行代码添加注释:
```python
import requests
from bs4 import BeautifulSoup
# 设置请求头,模拟浏览器访问
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
url = 'https://movie.douban.com/top250'
# 发起 GET 请求,获取网页内容
response = requests.get(url, headers=headers)
# 使用 BeautifulSoup 解析 HTML 文档
soup = BeautifulSoup(response.text, 'html.parser')
# 打开文件,以追加模式写入数据
with open('douban_movies.txt', 'a', encoding='utf-8') as f:
# 找到电影列表
movies = soup.find('ol', class_='grid_view').find_all('li')
for movie in movies:
# 获取电影名称、评分、评分人数、导演和主演等信息
name = movie.find('span', class_='title').text
rating = movie.find('span', class_='rating_num').text
rating_num = movie.find('div', class_='star').find_all('span')[3].text[:-3]
info = movie.find('div', class_='bd').p.text.strip()
director, actors = info.split('\n')[0].strip(), info.split('\n')[1].strip()
# 将电影信息写入文件中,每行以制表符分隔
f.write(f'{name}\t{rating}\t{rating_num}\t{director}\t{actors}\n')
```
在这个爬虫示例中,我们使用 requests 库发起 GET 请求获取网页内容,然后使用 BeautifulSoup 库解析 HTML 文档。具体而言,我们先找到电影列表所在的 `ol` 标签,然后再找到每个电影所在的 `li` 标签,最后从中提取需要的信息并写入文件中。
注意,这个爬虫示例只是为了帮助你了解爬虫的基本原理,实际爬虫中还需要考虑很多其他问题,比如反爬机制、爬虫频率等。如果你需要真正的爬虫工具,可以考虑使用 Scrapy 等专业的爬虫框架。同时,为了避免给豆瓣带来不必要的压力,建议在爬取数据时适当控制请求频率。
阅读全文
相关推荐
![.zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![txt](https://img-home.csdnimg.cn/images/20241231045021.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![py](https://img-home.csdnimg.cn/images/20250102104920.png)
![](https://img-home.csdnimg.cn/images/20250102104920.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![py](https://img-home.csdnimg.cn/images/20250102104920.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)