import requests
from bs4 import BeautifulSoup
import csv
# 请求头信息
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
# 获取豆瓣电影 top 250 页面信息
def get_page_info(url):
res = requests.get(url, headers=headers)
if res.status_code == 200:
return res.text
else:
return None
# 解析页面信息,获取电影信息列表,并写入 CSV 文件
def parse_info(html):
soup = BeautifulSoup(html, 'html.parser')
movie_list = []
for item in soup.find_all(class_='item'):
movie_rank = item.find(class_='pic').em.text
movie_name = item.find(class_='title').text.strip().replace('\n', '').replace(' ', '')
movie_rating = item.find(class_='rating_num').text
movie_comment_num = item.find(class_='star').find_all('span')[3].text[:-3]
movie_link = item.find(class_='hd').a['href']
movie_list.append({
'排名': movie_rank,
'电影名称': movie_name,
'评分': movie_rating,
'评价人数': movie_comment_num,
'链接': movie_link
})
# 写入 CSV 文件
with open('douban_movie_top250.csv', 'w', newline='', encoding='utf-8') as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=['排名', '电影名称', '评分', '评价人数', '链接'])
writer.writeheader()
writer.writerows(movie_list)
# 爬取豆瓣电影 top250 数据
def crawl_top250():
url = 'https://movie.douban.com/top250'
html = get_page_info(url)
if html:
parse_info(html)
print('爬取完毕')
else:
print('网络请求异常,爬取失败!')
if __name__ == '__main__':
crawl_top250()
requests 库和 Beautiful Soup 库来爬取豆瓣电影 Top250 数据。
注意事项:
在 headers 中设置 User-Agent 可以避免豆瓣封禁爬虫造成的请求异常。
通过 find_all 方法获取 BeautifulSoup 对象中的所有符合条件的子标签,返回一个列表,可以使用下标或遍历方式获取元素。
在使用 csv 内置库写入数据时,需要首先定义 CSV 文件的表头,即 DictWriter 中的 fieldnames 参数。
豆瓣页面的反爬机制比较厉害,在网络请求中可能需要加入一些反爬机制的代码以确保爬取成功,例如代理池、随机 User-Agent等
源代码和爬取内容下载:源码下载
本内容仅供参考 学习使用 禁止商业用途
各位还是要好好上课的哈!!!
- THE END -
最后修改:2024年6月19日
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://03-06.cn/archives/150.html