最近在学习xpath,在网上找资料的时候,发现一个新手经常拿来练手的项目,爬取猫眼电影前一百名排行的信息,很多都是跟崔庆才的很雷同,基本照抄.这里就用xpath自己写了一个程序,同样也是爬取猫眼电影,获取的信息是一样的,这里提供一个另外的解法.

说实话,对于网页信息的匹配,还是推荐用xpath,虽然正则确实也能达到效果,但是语句过于繁琐,一不注意就匹配不出东西,特别对于新手,本身就不熟悉正则表达式,错了都找不出来,容易劝退.正则我一般用于在处理文件,简直神器.

下面贴代码.

import requests
from requests.exceptions import RequestException
from lxml import etree
import csv
import re def get_page(url):
"""
获取网页的源代码
:param url:
:return:
"""
try:
headers = {
'User-Agent': 'Mozilla / 5.0(X11;Linuxx86_64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / '
'76.0.3809.100Safari / 537.36', }
response = requests.get(url, headers=headers)
if response.status_code == 200:
return response.text
return None
except RequestException:
return None def parse_page(text):
"""
解析网页源代码
:param text:
:return:
"""
html = etree.HTML(text)
movie_name = html.xpath("//p[@class='name']/a/text()")
actor = html.xpath("//p[@class='star']/text()")
actor = list(map(lambda item: re.sub('\s+', '', item), actor))
time = html.xpath("//p[@class='releasetime']/text()")
grade1 = html.xpath("//p[@class='score']/i[@class='integer']/text()")
grade2 = html.xpath("//p[@class='score']/i[@class='fraction']/text()")
new = [grade1[i] + grade2[i] for i in range(min(len(grade1), len(grade2)))]
ranking = html.xpath("///dd/i/text()")
return zip(ranking, movie_name, actor, time, new) def change_page(number):
"""
翻页
:param number:
:return:
"""
base_url = 'https://maoyan.com/board/4'
url = base_url + '?offset=%s' % number
return url def save_to_csv(result, filename):
"""
保存
:param result:
:param filename:
:return:
"""
with open('%s' % filename, 'a') as csvfile:
writer = csv.writer(csvfile, dialect='excel')
writer.writerow(result) def main():
"""
主函数
:return:
"""
for i in range(0, 100, 10):
url = change_page(i)
text = get_page(url)
result = parse_page(text)
for j in result:
save_to_csv(j, filename='message.csv') if __name__ == '__main__':
main()

使用xpath爬取猫眼电影排行榜的更多相关文章

  1. scrapy爬取猫眼电影排行榜

    做爬虫的人,一定离不开的一个框架就是scrapy框架,写小项目的时候可以用requests模块就能得到结果,但是当爬取的数据量大的时候,就一定要用到框架. 下面先练练手,用scrapy写一个爬取猫眼电 ...

  2. 爬虫--requests爬取猫眼电影排行榜

    '''目标:使用requests分页爬取猫眼电影中榜单栏目中TOP100榜的所有电影信息,并将信息写入文件URL地址:http://maoyan.com/board/4 其中参数offset表示其实条 ...

  3. 一起学爬虫——使用xpath库爬取猫眼电影国内票房榜

    之前分享了一篇使用requests库爬取豆瓣电影250的文章,今天继续分享使用xpath爬取猫眼电影热播口碑榜 XPATH语法 XPATH(XML Path Language)是一门用于从XML文件中 ...

  4. PYTHON 爬虫笔记八:利用Requests+正则表达式爬取猫眼电影top100(实战项目一)

    利用Requests+正则表达式爬取猫眼电影top100 目标站点分析 流程框架 爬虫实战 使用requests库获取top100首页: import requests def get_one_pag ...

  5. scrapy-redis分布式爬取猫眼电影

    能够利用redis缓存数据库的优点去重来避免数据的大面积冗余 1.首先就是要创建猫眼爬虫项目 2.进入项目内部创建一个爬虫文件 创建完文件之后就是要爬取的内容,我这边以爬取猫眼电影的title和lin ...

  6. # 爬虫连载系列(1)--爬取猫眼电影Top100

    前言 学习python有一段时间了,之前一直忙于学习数据分析,耽搁了原本计划的博客更新.趁着这段空闲时间,打算开始更新一个爬虫系列.内容大致包括:使用正则表达式.xpath.BeautifulSoup ...

  7. 爬虫系列(1)-----python爬取猫眼电影top100榜

    对于Python初学者来说,爬虫技能是应该是最好入门,也是最能够有让自己有成就感的,今天在整理代码时,整理了一下之前自己学习爬虫的一些代码,今天先上一个简单的例子,手把手教你入门Python爬虫,爬取 ...

  8. Python 爬取猫眼电影最受期待榜

     主要爬取猫眼电影最受期待榜的电影排名.图片链接.名称.主演.上映时间. 思路:1.定义一个获取网页源代码的函数: 2.定义一个解析网页源代码的函数: 3.定义一个将解析的数据保存为本地文件的函数: ...

  9. 爬虫系列1:Requests+Xpath 爬取豆瓣电影TOP

    爬虫1:Requests+Xpath 爬取豆瓣电影TOP [抓取]:参考前文 爬虫系列1:https://www.cnblogs.com/yizhiamumu/p/9451093.html [分页]: ...

随机推荐

  1. Linux常用指令grep(搜索过滤)

    Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达 ...

  2. 2.1 MATLAB的数据类型

    2.1 MATLAB的数据类型 每种数据类型都是以矩阵的形式存在的 数据类型:数值型.字符型.元胞型.结构体.函数句柄 数值型包含:双精度类型.单精度类型.整型 支持不同数据的转换 2.1.1 变量与 ...

  3. Git客户端TortoiseGit下载、安装及汉化

    本篇经验将和大家介绍Git客户端TortoiseGit下载.安装及汉化的方法,希望对大家的工作和学习有所帮助! TortoiseGit下载和安装   1 TortoiseGit是Windows下最好用 ...

  4. 批量删除.svn文件夹、.svn文件

      使用svn进行版本控制,每个文件夹下都有.svn文件夹,有些项目在脱离svn版本控制之后,想删除项目中所有的.svn文件夹,可用下面的方法进行快速删除: 1.打开要删除.svn文件的最外层文件夹, ...

  5. cad二次开发中DBText对象的外框GeometricExtents有问题?

    CAD2007版本 acDoc.Editor.WriteMessage( string.Format("[{0:F1},{1:F1},{2:F1}] - [{3:F1},{4:F1},{5: ...

  6. defer

    在Go语言的函数中return语句在底层并不是原子操作,它分为给返回值赋值和RET指令两步.而defer语句执行的时机就在返回值赋值操作后,RET指令执行前.具体如下图所示: 在defer函数定义时, ...

  7. GitHub:Youtube

    ylbtech-GitHub:Youtube 1.返回顶部   2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部 1. https://github.com/youtube 2.   ...

  8. tensorflow实现线性回归、以及模型保存与加载

    内容:包含tensorflow变量作用域.tensorboard收集.模型保存与加载.自定义命令行参数 1.知识点 """ 1.训练过程: 1.准备好特征和目标值 2.建 ...

  9. flutter json转字符串 字符串转json

    一段json字符串 var jsonStr = '{\"errorCode\": \"0\", \"message\": \"成功 ...

  10. CentOS 升级至指定版本

    CentOS系统下用yum upgrade命令只能升级到最新版本,CentOS仓库并不维护历史版本,所以只能使用 vault.centos.org 历史版本快照进行更新.本文以将7.0.1406升级到 ...