爬取 豆瓣电影top250 并保存为 csv 文件
import csv
import requests
from bs4 import BeautifulSoup
import codecs
def get_info(link):
r = requests.get(url)
soup = BeautifulSoup(r.text, 'lxml')
titles = soup.findAll(class_='hd')
nums = soup.findAll('em')
scores = soup.findAll(class_='rating_num')
for num, title, score in zip(nums, titles, scores):
data.append((num.text, title.find(class_='title').text, score.text))
print('Done one page')
if __name__ == '__main__':
urls = ['https://movie.douban.com/top250?start={}&filter='.format(i) for i in range(0 ,226, 25)]
csvfile = codecs.open('top250.csv', 'w+','utf_8_sig')
writer = csv.writer(csvfile)
data = []
for url in urls:
get_info(url)
for i in data:
writer.writerow(i)
csvfile.close()
这里直接把所有数据存在 data 内,再一次性写入 csv。
有个问题是直接把 data 当全局变量来用了。
python 中列表是全局变量么,用代码试了下发现好像是,没有查到资料。在函数中加个 global data 也行
运行下试试
就简单的爬取了下,其他内容也是一样的。