python爬虫之xpath和lxml应用—爬取豆瓣评分爬取
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应用—爬取豆瓣评分爬取相关推荐
- python xpath语法-Python爬虫之XPath语法和lxml库的用法
本来打算写的标题是XPath语法,但是想了一下Python中的解析库lxml,使用的是Xpath语法,同样也是效率比较高的解析方法,所以就写成了XPath语法和lxml库的用法 安装 为什么要用这个库 ...
- Python爬虫:Xpath爬取网页信息(附代码)
Python爬虫:Xpath爬取网页信息(附代码) 上一次分享了使用Python简单爬取网页信息的方法.但是仅仅对于单一网页的信息爬取一般无法满足我们的数据需求.对于一般的数据需求,我们通常需要从一个 ...
- Python爬虫之findall和lxml
Python爬虫之findall和lxml 提示:前言 Python爬虫之findall和lxml 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 Python爬虫之fin ...
- 【Python】【进阶篇】十二、Python爬虫的Xpath简明教程(十分钟入门)
目录 十二.Python爬虫的Xpath简明教程(十分钟入门) 12.1 Xpath表达式 12.2 Xpath节点 12.3 节点关系 12.4 Xpath基本语法 12.4.1 基本语法使用 12 ...
- Python爬虫之XPath基础教程:用代码抓取网页数据
Python爬虫之XPath基础教程:用代码抓取网页数据 在网络时代,网页数据是获取信息和进行分析的最重要的来源之一.Python的爬虫技术让我们可以轻松抓取网页数据,并进行数据处理.XPath是一种 ...
- Python爬虫小白教程(二)—— 爬取豆瓣评分TOP250电影
文章目录 前言 安装bs4库 网站分析 获取页面 爬取页面 页面分析 其他页面 爬虫系列 前言 经过上篇博客Python爬虫小白教程(一)-- 静态网页抓取后我们已经知道如何抓取一个静态的页面了,现在 ...
- 零基础入门python爬虫之《青春有你2》选手信息爬取
零基础入门python爬虫之<青春有你2>选手信息爬取 完成<青春有你2>选手图片爬取,生成选手图片的绝对路径并输出,统计爬取的图片总数量.使用工具:requests模块.Be ...
- Python爬虫:Xpath语法笔记
Python爬虫:Xpath语法笔记 一.选取节点 常用的路劲表达式: 表达式 描述 实例 nodename 选取nodename节点的所有子节点 xpath('//div') 选取了div节点的 ...
- 【爬虫+数据可视化毕业设计:英雄联盟数据爬取及可视化分析,python爬虫可视化/数据分析/大数据/大数据屏/数据挖掘/数据爬取,程序开发-哔哩哔哩】
[爬虫+数据可视化毕业设计:英雄联盟数据爬取及可视化分析,python爬虫可视化/数据分析/大数据/大数据屏/数据挖掘/数据爬取,程序开发-哔哩哔哩] https://b23.tv/TIoy6hj
最新文章
- 计算机视觉领域如何从别人的论文里获取自己的idea?
- mysql 编码分层_【平台开发】— 5.后端:代码分层
- ORACLE纯SQL实现多行合并一行
- pytorch教程龙曲良31-35
- JAVA识别字符串是数字(英文)还是汉字,web页面进行字符截断的帮助类
- [html] iframe父页面如何获取子页面的元素?
- 进程、线程、信号量和互斥锁
- PAT乙级(1009 说反话)
- 车联网网络安全技术研究
- 计算机鼠标键盘没反应,电脑鼠标键盘突然失灵
- 二维码解码器(zbar-0.10+ opencv-2.4.10+VS2010)完整实例含源代码
- Latex排版图片样式
- ubuntu在终端会话和图形界面之间切换的快捷键
- 人类迁徙计划 (feat.译者补完篇)
- 基础优化 标题优化 上下架注意事项 流量少 转换率低 加购收藏 店铺层级 动销率 动态评分 当你弄清楚这些,自然流量的起来的重要因素
- 数据从hana倒回Oracle的方法,SAP HANA SLT 将Oracle表 数据同步到HANA数据库
- linux轻量级进程,linux轻量级进程LWP
- MODIS与Landsat获取LST数据
- 什么是零代码开发平台,为什么企业IT应该重视?
- OpenCV:直方图均衡
热门文章
- 及时输出_S21赛季武则天输出手法教学,附克制思路
- MySQL日志/索引/锁/事务特性的理解
- 搭建 JumpServer 堡垒机管理数万台游戏服务器
- 青岛大学计算机专硕分数线,2020青岛大学研究生分数线汇总(含2016-2019历年复试)...
- Tita OKR分享:什么是好的OKR?
- 灵石县“灵石酸枣仁”品牌正式发布,促进产业发展 助力乡村振兴
- mac视频剪辑软件Final Cut Pro X for Mac
- P28-前端基础-CSS盒子垂直方向的布局
- 强大的安卓手机远程管理工具 – Droidjack
- 【研究生学术英语读写教程翻译 中国科学院大学Unit7】