python爬虫之豆瓣评分爬取

  • 1 第一步 获取网页源码
  • 2 第二步 获取电影信息
  • 3 第三步 保存数据
  • 4 综合
'''
需求:爬取电影的名字 评分 引言 详情页的url,每一页都爬取并且把数据保存到csv文件当中
步骤:
第一步 获取网页源码
第二步 获取电影信息
第三步 保存数据
'''

1 第一步 获取网页源码

'''
第一步:获取网页源码
(1)分析目标url
(2)获取网页源代码
'''
# https://movie.douban.com/top250?start=0&filter= 第一页 (start=0)
# https://movie.douban.com/top250?start=25&filter= 第二页 (start=25)
# https://movie.douban.com/top250?start=50&filter= 第三页  (start=50)
# 目标url: https://movie.douban.com/top250?start=(i-1)*25&filter=  第i页 start=(i-1)
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'}import requests
def get_source(url):response = requests.get(url,headers=headers)# print(response) # <Response [200]>response.encoding = 'utf-8'return response.textif __name__ == '__main__':for i in range(0,10):page = str(i*25)url = 'https://movie.douban.com/top250?start='+page+'&filter='get_source(url)

2 第二步 获取电影信息


'''
第二步:获取电影信息
'''
import lxml
from lxml import etree
def get_item(source):html_element = etree.HTML(source)movieItemList = html_element.xpath('//div[@class="info"]')# 定义一个空的列表movieList = []for eachMoive in movieItemList:# 创建一个字典 像列表中存储数据[{电影一},{电影二}......]movieDict = {}title = eachMoive.xpath('div[@class="hd"]/a/span[@class="title"]/text()') # 标题subtitle = eachMoive.xpath('div[@class="hd"]/a/span[@class="other"]/text()')  # 副标题link = eachMoive.xpath('div[@class="hd"]/a/@href')[0]  # urlstar = eachMoive.xpath('div[@class="bd"]/div[@class="star"]/span[@class="rating_num"]/text()')[0] # 评分quote = eachMoive.xpath('div[@class="bd"]/p[@class="quote"]/span/text()')  # 引言(名句)if quote:quote = quote[0]else:quote = ''# 保存数据movieDict['title'] = titlemovieDict['subtitle'] = subtitlemovieDict['url'] = linkmovieDict['star'] = starmovieDict['quote'] = quotemovieList.append(movieDict)print(movieList)return movieList

3 第三步 保存数据

import csv
def writeData(movieList):with open('douban.csv','w',encoding='utf-8',newline='') as f:writer = csv.DictWriter(f,fieldnames=['title','subtitle','url','star','quote'])writer.writeheader() # 写入表头for each in movieList:writer.writerow(each)

4 综合

# 导入模块
import requests  # 获取源代码
import lxml  # 获取电影项目
from lxml import etree # 获取电影项目
import csv  # 保存数据'''
第一步:获取网页源码
(1)分析目标url
(2)获取网页源代码
'''
# https://movie.douban.com/top250?start=0&filter= 第一页 (start=0)
# https://movie.douban.com/top250?start=25&filter= 第二页 (start=25)
# https://movie.douban.com/top250?start=50&filter= 第三页  (start=50)
# 目标url: https://movie.douban.com/top250?start=(i-1)*25&filter=  第i页 start=(i-1)
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'}
def get_source(url):response = requests.get(url,headers=headers)# print(response) # <Response [200]>response.encoding = 'utf-8'return response.text'''
第二步:获取并保存电影项目
(1)获取项目
(2)保存电影项目
'''
def get_item(source):html_element = etree.HTML(source)movieItemList = html_element.xpath('//div[@class="info"]')# 定义一个空的列表movieList = []for eachMoive in movieItemList:# 创建一个字典 像列表中存储数据[{电影一},{电影二}......]movieDict = {}title = eachMoive.xpath('div[@class="hd"]/a/span[@class="title"]/text()') # 标题subtitle = eachMoive.xpath('div[@class="hd"]/a/span[@class="other"]/text()')  # 副标题link = eachMoive.xpath('div[@class="hd"]/a/@href')[0]  # urlstar = eachMoive.xpath('div[@class="bd"]/div[@class="star"]/span[@class="rating_num"]/text()')[0] # 评分quote = eachMoive.xpath('div[@class="bd"]/p[@class="quote"]/span/text()')  # 引言(名句)if quote:quote = quote[0]else:quote = ''# 保存数据movieDict['title'] = titlemovieDict['subtitle'] = subtitlemovieDict['url'] = linkmovieDict['star'] = starmovieDict['quote'] = quotemovieList.append(movieDict)print(movieList)return movieList# 保存数据
def writeData(movieList):with open('douban.csv','w',encoding='utf-8',newline='') as f:writer = csv.DictWriter(f,fieldnames=['title','subtitle','url','star','quote'])writer.writeheader() # 写入表头for each in movieList:writer.writerow(each)movieList = []
for i in range(0,10):page = str(i*25)url = 'https://movie.douban.com/top250?start='+page+'&filter='print(url)source = get_source(url)movieList += get_item(source)
writeData(movieList)

python爬虫之xpath和lxml应用—爬取豆瓣评分爬取相关推荐

  1. python xpath语法-Python爬虫之XPath语法和lxml库的用法

    本来打算写的标题是XPath语法,但是想了一下Python中的解析库lxml,使用的是Xpath语法,同样也是效率比较高的解析方法,所以就写成了XPath语法和lxml库的用法 安装 为什么要用这个库 ...

  2. Python爬虫:Xpath爬取网页信息(附代码)

    Python爬虫:Xpath爬取网页信息(附代码) 上一次分享了使用Python简单爬取网页信息的方法.但是仅仅对于单一网页的信息爬取一般无法满足我们的数据需求.对于一般的数据需求,我们通常需要从一个 ...

  3. Python爬虫之findall和lxml

    Python爬虫之findall和lxml 提示:前言 Python爬虫之findall和lxml 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 Python爬虫之fin ...

  4. 【Python】【进阶篇】十二、Python爬虫的Xpath简明教程(十分钟入门)

    目录 十二.Python爬虫的Xpath简明教程(十分钟入门) 12.1 Xpath表达式 12.2 Xpath节点 12.3 节点关系 12.4 Xpath基本语法 12.4.1 基本语法使用 12 ...

  5. Python爬虫之XPath基础教程:用代码抓取网页数据

    Python爬虫之XPath基础教程:用代码抓取网页数据 在网络时代,网页数据是获取信息和进行分析的最重要的来源之一.Python的爬虫技术让我们可以轻松抓取网页数据,并进行数据处理.XPath是一种 ...

  6. Python爬虫小白教程(二)—— 爬取豆瓣评分TOP250电影

    文章目录 前言 安装bs4库 网站分析 获取页面 爬取页面 页面分析 其他页面 爬虫系列 前言 经过上篇博客Python爬虫小白教程(一)-- 静态网页抓取后我们已经知道如何抓取一个静态的页面了,现在 ...

  7. 零基础入门python爬虫之《青春有你2》选手信息爬取

    零基础入门python爬虫之<青春有你2>选手信息爬取 完成<青春有你2>选手图片爬取,生成选手图片的绝对路径并输出,统计爬取的图片总数量.使用工具:requests模块.Be ...

  8. Python爬虫:Xpath语法笔记

    Python爬虫:Xpath语法笔记 一.选取节点 常用的路劲表达式: 表达式 描述 实例   nodename 选取nodename节点的所有子节点 xpath('//div') 选取了div节点的 ...

  9. 【爬虫+数据可视化毕业设计:英雄联盟数据爬取及可视化分析,python爬虫可视化/数据分析/大数据/大数据屏/数据挖掘/数据爬取,程序开发-哔哩哔哩】

    [爬虫+数据可视化毕业设计:英雄联盟数据爬取及可视化分析,python爬虫可视化/数据分析/大数据/大数据屏/数据挖掘/数据爬取,程序开发-哔哩哔哩] https://b23.tv/TIoy6hj

最新文章

  1. 计算机视觉领域如何从别人的论文里获取自己的idea?
  2. mysql 编码分层_【平台开发】— 5.后端:代码分层
  3. ORACLE纯SQL实现多行合并一行
  4. pytorch教程龙曲良31-35
  5. JAVA识别字符串是数字(英文)还是汉字,web页面进行字符截断的帮助类
  6. [html] iframe父页面如何获取子页面的元素?
  7. 进程、线程、信号量和互斥锁
  8. PAT乙级(1009 说反话)
  9. 车联网网络安全技术研究
  10. 计算机鼠标键盘没反应,电脑鼠标键盘突然失灵
  11. 二维码解码器(zbar-0.10+ opencv-2.4.10+VS2010)完整实例含源代码
  12. Latex排版图片样式
  13. ubuntu在终端会话和图形界面之间切换的快捷键
  14. 人类迁徙计划 (feat.译者补完篇)
  15. 基础优化 标题优化 上下架注意事项 流量少 转换率低 加购收藏 店铺层级 动销率 动态评分 当你弄清楚这些,自然流量的起来的重要因素
  16. 数据从hana倒回Oracle的方法,SAP HANA SLT 将Oracle表 数据同步到HANA数据库
  17. linux轻量级进程,linux轻量级进程LWP
  18. MODIS与Landsat获取LST数据
  19. 什么是零代码开发平台,为什么企业IT应该重视?
  20. OpenCV:直方图均衡

热门文章

  1. 及时输出_S21赛季武则天输出手法教学,附克制思路
  2. MySQL日志/索引/锁/事务特性的理解
  3. 搭建 JumpServer 堡垒机管理数万台游戏服务器
  4. 青岛大学计算机专硕分数线,2020青岛大学研究生分数线汇总(含2016-2019历年复试)...
  5. Tita OKR分享:什么是好的OKR?
  6. 灵石县“灵石酸枣仁”品牌正式发布,促进产业发展 助力乡村振兴
  7. mac视频剪辑软件Final Cut Pro X for Mac
  8. P28-前端基础-CSS盒子垂直方向的布局
  9. 强大的安卓手机远程管理工具 – Droidjack
  10. 【研究生学术英语读写教程翻译 中国科学院大学Unit7】