python网络爬虫案例实战
时间: 2023-07-11 13:57:25 浏览: 59
好的,我可以为您介绍一个Python网络爬虫实战案例。
这个案例是爬取豆瓣电影TOP250的数据。具体步骤如下:
1. 导入所需模块和库,如requests、beautifulsoup4等。
2. 打开豆瓣电影TOP250的网页,获取网页源代码。
3. 使用beautifulsoup4库解析网页源代码,找到电影名称、评分、导演、主演、上映年份、影片类型等信息所在的HTML标签,并提取出这些信息。
4. 将提取的信息存储到字典中,并将所有字典存储到一个列表中。
5. 将列表中的数据写入到CSV文件中,以便进行进一步的分析和处理。
下面是完整的代码示例:
```
import csv
import requests
from bs4 import BeautifulSoup
# 打开豆瓣电影TOP250的网页,获取网页源代码
def get_html(url):
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'}
response = requests.get(url, headers=headers)
html = response.text
return html
# 解析网页源代码,提取电影信息
def get_movie_info(html):
soup = BeautifulSoup(html, 'html.parser')
movie_list = soup.find('ol', class_='grid_view').find_all('li')
movie_info_list = []
for movie in movie_list:
movie_dict = {}
movie_dict['rank'] = movie.find('em').text
movie_dict['title'] = movie.find('span', class_='title').text
movie_dict['score'] = movie.find('span', class_='rating_num').text
movie_dict['director'] = movie.find('div', class_='bd').find_all('p')[0].text.split('\n')[1].split(':')[1].strip()
movie_dict['actors'] = movie.find('div', class_='bd').find_all('p')[0].text.split('\n')[2].split(':')[1].strip()
movie_dict['year'] = movie.find('div', class_='bd').find_all('p')[1].text.split('\n')[1].split(':')[1].strip()
movie_dict['type'] = movie.find('div', class_='bd').find_all('p')[1].text.split('\n')[2].split(':')[1].strip()
movie_info_list.append(movie_dict)
return movie_info_list
# 将提取的电影信息存储到CSV文件中
def write_to_csv(movie_info_list):
with open('douban_top250_movies.csv', 'w', newline='', encoding='utf-8-sig') as f:
fieldnames = ['rank', 'title', 'score', 'director', 'actors', 'year', 'type']
writer = csv.DictWriter(f, fieldnames=fieldnames)
writer.writeheader()
for movie_dict in movie_info_list:
writer.writerow(movie_dict)
# 主函数
def main():
url = 'https://movie.douban.com/top250'
movie_info_list = []
for i in range(0, 250, 25):
url_i = url + '?start=' + str(i) + '&filter='
html = get_html(url_i)
movie_info_list += get_movie_info(html)
write_to_csv(movie_info_list)
print('豆瓣电影TOP250信息已存储到douban_top250_movies.csv文件中!')
if __name__ == '__main__':
main()
```
运行程序后,会在当前目录下生成一个douban_top250_movies.csv文件,里面存储了豆瓣电影TOP250的所有电影信息。