python爬取豆瓣电影top250的名字_Python爬虫-爬取豆瓣电影Top250

小菜鸟一枚,这是第五个爬虫吧,记录一下

#!usr/bin/env python3

# -*- coding:utf-8-*-

import requests

from bs4 import BeautifulSoup

import re

import csv

header = {

'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',

'Accept-Encoding': 'gzip, deflate, br',

'Accept-Language': 'zh-CN,zh;q=0.8',

'Connection': 'keep-alive',

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 '

'(KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'

}

url_list = ['https://movie.douban.com/top250?start=%d' % index for index in range(0, 250, 25)]

# url = 'https://movie.douban.com/top250?start=0'

def movie_list(url):

response = requests.get(url, header)

response.encoding = 'utf-8'

html = BeautifulSoup(response.text, 'html.parser')

data = html.find('ol', {'class': 'grid_view'})

m_list = data.find_all('li')

movies = []

for m in m_list:

rank = m.find('em').get_text() # 排名

m_name = m.find('img')['alt'] # 获取电影名字

info = m.find('p').get_text()

director = re.findall('导演:\s(.*?)\s', info)[0] # 导演

starring = re.findall('主演:\s(.*?)\s', info) # 主演

if len(starring) == 0:

starring = '佚名' # 因为豆瓣显示不全,所以。。

else:

starring = starring[0]

year = re.search(r'\d{4}', info).group() # 获取年份

area_list = re.findall('\s/\s(.*?)\s/\s', info)

# area = re.search(r'\/\n{*}\n\/', info)

if len(area_list) > 1:

area = area_list[1]

else:

area = area_list[0]

grade = m.select('span.rating_num')[0].get_text() # 评分

quote_l = m.select('span.inq') # 简介?

if len(quote_l) == 0:

quote = ''

else:

quote = quote_l[0].get_text()

tup = (rank, m_name, director, starring, year, area, grade, quote)

movies.append(tup)

return movies

# 将内容保存到csv文件肿

def save_data():

headers = ['排名', '名字', '导演', '主演', '年份', '地区', '评分', '简介']

with open('/Users/mocokoo/Documents/py_file/douban_movie_top250.csv', encoding='UTF-8', mode='w') as f:

f_csv = csv.writer(f)

f_csv.writerow(headers)

for url in url_list:

data_list = movie_list(url)

for data in data_list:

f_csv.writerow(data)

if __name__ == '__main__':

save_data()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值