csv中包含多余换行符_Python3爬虫之猫眼电影TOP100(requests、lxml、Xpath、CSV)

63aad4859f2fd508fdb86009da5c4bad.gif

点击关注,我们共同每天进步一点点!

【1x00】循环爬取网页模块

观察猫眼电影TOP100榜,请求地址为:https://maoyan.com/board/4

每页展示10条电影信息,翻页观察 url 变化:

第一页:
https://maoyan.com/board/4

第二页:
https://maoyan.com/board/4?offset=10

第三页:
https://maoyan.com/board/4?offset=20

一共有10页,利用一个 for 循环,从 0 到 100 每隔 10 取一个值拼接到 url,实现循环爬取每一页

def index_page(number):
    url = 'https://maoyan.com/board/4?offset=%s' % number
    response = requests.get(url=url, headers=headers)
    return response.text

if __name__ == '__main__':
    for i in range(0, 100, 10):
        index = index_page(i)

【2x00】解析模块

定义一个页面解析函数 parse_page(),使用 lxml 解析库的 Xpath 方法依次提取电影排名(ranking)、电影名称(movie_name)、主演(performer)、上映时间(releasetime)、评分(score)、电影封面图 url(movie_img)

通过对主演部分的提取发现有多余的空格符和换行符,循环 performer 列表,使用 strip() 方法去除字符串头尾空格和换行符

电影评分分为整数部分和小数部分,依次提取两部分,循环遍历组成一个完整的评分

最后使用 zip() 函数,将所有提取的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表

def parse_page(content):
    tree = etree.HTML(content)
    # 电影排名
    ranking = tree.xpath("//dd/i/text()")
    # 电影名称
    movie_name = tree.xpath('//p[@class="name"]/a/text()')
    # 主演
    performer = tree.xpath("//p[@class='star']/text()")
    performer = [p.strip() for p in performer]
    # 上映时间
    releasetime = tree.xpath('//p[@class="releasetime"]/text()')
    # 评分
    score1 = tree.xpath('//p[@class="score"]/i[@class="integer"]/text()')
    score2 = tree.xpath('//p[@class="score"]/i[@class="fraction"]/text()')
    score = [score1[i] + score2[i] for i in range(min(len(score1), len(score2)))]
    # 电影封面图
    movie_img = tree.xpath('//img[@class="board-img"]/@data-src')
    return zip(ranking, movie_name, performer, releasetime, score, movie_img)

【3x00】数据储存模块

定义一个 save_results() 函数,将所有数据保存到 maoyan.csv 文件

def save_results(result):
    with open('maoyan.csv', 'a') as fp:
        writer = csv.writer(fp)
        writer.writerow(result)

【4x00】完整代码

# =============================================
# --*-- coding: utf-8 --*--
# @Time    : 2019-09-23
# @Author  : TRHX
# @Blog    : www.itrhx.com
# @CSDN    : https://blog.csdn.net/qq_36759224
# @FileName: maoyan.py
# @Software: PyCharm
# =============================================

import requests
from lxml import etree
import csv

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36'
}


def index_page(number):
    url = 'https://maoyan.com/board/4?offset=%s' % number
    response = requests.get(url=url, headers=headers)
    return response.text


def parse_page(content):
    tree = etree.HTML(content)
    # 电影排名
    ranking = tree.xpath("//dd/i/text()")
    # 电影名称
    movie_name = tree.xpath('//p[@]/a/text()')
    # 主演
    performer = tree.xpath("//p[@class='star']/text()")
    performer = [p.strip() for p in performer]
    # 上映时间
    releasetime = tree.xpath('//p[@]/text()')
    # 评分
    score1 = tree.xpath('//p[@]/i[@]/text()')
    score2 = tree.xpath('//p[@]/i[@]/text()')
    score = [score1[i] + score2[i] for i in range(min(len(score1), len(score2)))]
    # 电影封面图
    movie_img = tree.xpath('//img[@]/@src')
    return zip(ranking, movie_name, performer, releasetime, score, movie_img)


def save_results(result):
    with open('maoyan.csv', 'a') as fp:
        writer = csv.writer(fp)
        writer.writerow(result)


if __name__ == '__main__':
    print('开始爬取数据...')
    for i in range(0, 100, 10):
        index = index_page(i)
        results = parse_page(index)
        for i in results:
            save_results(i)
    print('数据爬取完毕!')

【4x00】数据截图

3b1c5846631b38b6d96420a921cc462f.png

原文地址:https://blog.csdn.net/qq_36759224/article/details/1012300247b7dc0047ee4507343a9c58520f2bda2.pngf92360b9c7000d007373a41ce4d09124.gif

喜欢请关注,有用请转发~

升职、加薪、无漏测-点“在看”

3670b008debf7ae8004f1c2816da7068.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/381111.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

创新品类,N次方的市场爆炸力

一、品类的诱惑力 可乐:一种碳酸饮料;营养快线:一种牛奶果汁;饮养高层:一种高端饮养品;防电墙热水器:一种有安全装置的电热水器;香飘飘:一种可以即冲泡饮的杯装奶茶……这…

计蒜客可以做计算机编程吗,如果你的编程能力不足以支撑你成为工程师的野心,不妨到计蒜客上学学看...

在人才招聘领域存在这样一个怪圈,高校每年都说是最难就业年、人才过剩,而对于企业HR来说永远都招不到称心如意的人才。这个怪圈在“计蒜客”创始人俞昊然看来,主要是因为当今高校的教学资源太过陈旧,没有跟上业内发展的需求&#…

容器宿主机数据库_解决Docker容器内访问宿主机MySQL数据库服务器的问题

懒得描述太多,总归是解决了问题,方法简要记录如下,虽然简要,但是完整,一来纪念处理该问题耗费的大半天时间,二来本着共享精神帮助其他遇到该问题的哥们儿,当然这个方法并不一定能解决你们的问题,但是多少能提供些解决思路.第一,先检查防火墙,通常应该没什么问题(问题解决之后我…

郓城天气预报软件测试,郓城天气预报15天

发送给QQ好友★郓城未来15天天气预报★郓城天气预报7月22日 星期四:阴转小雨,24C~29C东风,3-4级转小于3级郓城天气预报7月23日 星期五:阴转多云,24C~31C东风,小于3级郓城天气预报7月24日 星期六:晴转多云,24C~32C东风&…

服务器角色与数据库角色

http://hi.baidu.com/240728057/blog/item/dd28eb0f4510ec2d6159f332.htmlhttp://topic.csdn.net/t/20030821/14/2172932.html 更改数据库登陆密码 权限:sysadmin创建数据库和修改数据库 权限:dbcreator 固定服务器角色 描述 sysadmin 在 SQL Server 中…

数据挖掘肿瘤预测_Nature Medicine封面文章:利用单核细胞数量预测及评估肿瘤免疫治疗效果...

免疫检查点阻断已经彻底改变了癌症治疗,临床实验数据表明PD-1、PD-L1抗体的免疫治疗可以有效应对转移性黑色素瘤和多种其他类型的癌症。尽管无进展生存期显着增加,临床治疗结果也呈现很大的个体差异,只有一小部分患者对药物表现出持久的反应&…

百善计算机学习,党建引领学做合一,志愿服务助力乡村振兴——计算机工程学院开展“百善孝为先”主题宣传文化墙墙绘涂鸦活动...

为充分发挥党员的先锋模范作用和当代大学生学做合一的品质,用实际行动助力乡村振兴,2019年5月18日,计算机工程学院党员服务站组织学生党员及第57期党校积极分子赴郫都区郫筒街道长乐村开展“百善孝为先”主题宣传文化墙墙绘涂鸦活动,为乡村振…

mysql 天数减1_mysql 日期操作 增减天数、时间转换、时间戳(转换)

MySQL datediff(date1,date2):两个日期相减 date1 - date2,返回天数。select datediff(2008-08-08, 2008-08-01); -- 7select datediff(2008-08-01, 2008-08-08); -- -7一、MySQL 获得当前日期时间 函数1.1 获得当前日期时间(date time)函数&#xff1a…

tcp 测试软件,ztcp

软件简介ztcp 是一个发送 TCP 命令的工具,本项目采用 go 语言编写,提供一个 tcp 客户端,专门用作各种 socket 测试,HTTP 测试。尤其是对AJAX 请求很便利的支持。安装检查依赖库本项目依赖zgo : 需要它提供的一些便利函数iconv-go …

使用BizTalk Server常见问题处理

在开始开发BizTalk项目的时候,一些开发者会碰到许多基础问题,本文对这些常见问题进行罗列,其中有个别问题笔者向微软的BizTalk工程师寻求了问题解决方案,旨在让使用BizTalk的朋友更快的进行开发。文中的内容基于BizTalk Server 20…

python数据存储用什么_Python的小数据存储,用什么格式更有逼格?

小数据存储我们在编写代码的时候,经常会涉及到数据存储的情况,如果是爬虫得到的大数据,我们会选择使用数据库,或者excel存储。但如果只是一些小数据,或者说关联性较强且存在存储后复用的数据,我们该如何存储…

电气与计算机学院院长论坛报告,自动化学院分论坛第十、十一次专家报告会圆满成功...

2016年10月24日下午两点半,第十三届北航研究生学术论坛自动化学院分论坛第十、十一次专家报告会在新主楼D座639举行。本次报告会由自动化学院的董希旺老师邀请到了加拿大维多利亚大学电子与计算机工程系副研究员何建平博士和加拿大阿尔伯塔大学电气与计算机工程系的…

媒资管理系统的应用与发展

电视台作为一个生产单位,其主要产品为音频和视频节目,同时包含了与其相关的文稿,如新闻稿、解说词、拍摄脚本等。视音频节目和素材作为资产具有很高的价值,甚至超过设备等固定的有形资产,其中很多资料独一无二、非常珍…

计算机教师教学心得体会,信息技术教师教学的一点体会

放飞学生的梦想随着素质教育的不断深入,作为教师,我们认识到,教育不仅仅是追求百分之多少的升学率,而是追求每个学生生动、活泼、主动的发展、不仅仅是汇报时的总结、评比时的数据,而是教师与学生共度的生命历程&#…

在ne中分析贱谈.net中简体转繁体

最近到了台企,什么都要用繁体的。 开发中也遇到了简繁体转换的问题。 这里和朋友们分享一下用.net实现简繁体转换的经验。 我还是直接贴例子在说明一下吧: //Form1.cs using System; using System.Collections.Generic; using System.ComponentModel; us…

localdatetime转化为date_LocalDateTime用法(jdk1.8 )

前言最近看别人项目源码,发现Java8新的日期时间API很方便强大,所以转载该入门介绍博客,记录一下。使用新时间日期API的必要性在java8以前,或许:当你在做有关时间日期的操作时,你会想到用Date;当你在做日期、…

计算机里的东西不小心删除如何恢复,原先在电脑界面上的文件不小心删除了怎么恢复,谢谢了...

那就得看看删除的方式是哪种的了,如果是普通删除的文件,可以打开回收站查看是否有想文件的存在,如果有的话进行还原的操作,如果未发现的话,可以参考下述的恢复教程进行文件的恢复工作:步骤一:到…

我的处女作《设计模式之禅》——前言

终于可以写前言了,这说明本书已经基本完成,可以长嘘一口气了。 为什么写这本书 为什么写这本书?今年5月份,我在JavaEye上发了一个帖子,其中提到自己已经工作9年了,总觉得这9年不应该就这么荒废了&#xff0…

bc汇编指令用法_汇编指令imul 与 操作数

最近在练《天书夜读》,在2.3 C语言的数组与结构 章节里有如下代码(注:我用的是VS2005):--- e:\practice\visual studio 2005\projects\reverseme\reverseme\reverseme.c ----// ReverseMe.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h&…

css设置导航栏背景颜色,更改bootstrap导航栏背景颜色和字体颜色

3 个答案:答案 0 :(得分:46)我使用以下CSS成功设置了Bootstrap导航栏的样式。你也没有在CSS中定义任何字体,这就是字体没有改变的原因。可以在here找到使用此CSS的网站。.navbar-default .navbar-nav > li > a:hover, .navbar-default .navbar-nav…