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来说永远都招不到称心如意的人才。这个怪圈在“计蒜客”创始人俞昊然看来,主要是因为当今高校的教学资源太过陈旧,没有跟上业内发展的需求&#…

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

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

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

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

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

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

UML 图例

对UML不是很了解,简单地了解一下UML设计中有的图例及基本作用。首先对UML中的各个图的功用做一个简单介绍: 1、用例图 描述角色以及角色与用例之间的连接关系。说明的是谁要使用系统,以及他们使用该系统可以做些什么。一个用例图包含了多个模…

服务器与本地文件共享文件夹,云服务器对本地服务器共享文件夹

云服务器对本地服务器共享文件夹 内容精选换一换当您成功创建私有镜像后,镜像的状态为“正常”,您可以使用该镜像创建服务器实例或云硬盘,也可以将镜像共享给其他帐号,或者复制镜像到其他区域。私有镜像的生命周期如图1所示。远程…

服务器可否替代手机芯片,基于ARM的处理器能取代桌面处理器吗?

科技的发展速度太快了,从手机进入智能时代开始,手机处理器的速度也越来越快了,以前人们办公都是在电脑端进行的,随着手机的功能越来越多,手机处理器速度越来越快,已经有一小部分的工作可以在手机上完成了。…

VS2010 RTM

Visual Studio 2010 已经RTM并且在Msdn subscription提供了下载和试用版本,为了迎接这一产品,我在这个周末格式化了系统分区重新安装了Windows 7 x64。 在最新的Visual Assist配合下,整个IDE较之之前的版本更加舒适。 比如,选中的…

个人宣传画

转载于:https://www.cnblogs.com/yellowyu/archive/2010/04/19/1715735.html

韩寒说世博会

先声明:我不是韩寒的什么粉丝,也不太关注这些作家的事情,希望这些文字能让你想到一些什么东西...........转载自:http://tieba.baidu.com/f?kz752703402 最近,老是有媒体要关于世博会采访我,我觉得很为难,如果我赞美他吧,估计我良…

windows系统下的云服务器部署tomcat

在环境配置没问题的基础下,如果启动服务器缺无法打开默认页面,则很有可能说明是你的端口问题: 这里我的解决方法: 控制面板-->系统和安全-->Windows 防火墙-->高级设置-->入站规则-->新建规则 依次选择端口-->…

git远程仓库上传及本地仓库创建

第一步:我们需要先创建一个本地的版本库(其实也就是一个文件夹)。 你可以直接右击新建文件夹,也可以右击打开Git bash命令行窗口通过命令来创建。 现在我通过命令行在桌面新建一个TEST文件夹(你也可以在其他任何地方创…

强大js web甘特图制作之甘特图组件和数据对象

引用CSS和JS 使用EdoGantt是一件简单轻松的事&#xff0c;首先我们在HTML页面内引用CSS和JS&#xff1a; <!--edo css--><link href"http://www.cnblogs.com/scripts/edo/res/css/edo-all.css" rel"stylesheet" type"text/css" />&l…

百度文档搜索与Google文档搜索的简单比较

很多有具有参考价值的资料&#xff0c;比如学生写论文报告&#xff0c;老师做课件&#xff0c;找工作准备简历都需要参考其他人的成果。在互联网上&#xff0c;这类资料一般不是普通的html网页&#xff0c;而是以Word、ppt(s)、Excel、pdf等格式存在的。虽然这些文件不象Html文…

17joys网站后台功能设计-阶段1

开始没想把网站设计的很完善再开始写代码&#xff0c;主要也是想通过不断的编写小模块&#xff0c;最后再整合在一起&#xff0c;这样也好记录我每个时间段的经验心得&#xff0c;在设计17joys的网站后台功能时&#xff0c;看了很多CMS系统&#xff0c;最后还是决定参考我最喜欢…

汇编指令——转

今天来扒一扒X86汇编指令&#xff08;IA-32指令&#xff09;&#xff0c;首先看看它的概念&#xff1a; IA-32&#xff08;Intel Architecture 32bit&#xff0c;英特尔32位体系架构&#xff09;[1] &#xff0c;属于X86体系结构的32位版本&#xff0c;即具有32位内存地址和32…

Centos7 开启网卡配置IP并连接xshell——转

1、在VMware中安装Centos7系统[1] 2、查看虚拟机里的Centos7的IP[2] 1)查看IP 输入ip查询命名 ip addr 发现 ens33 没有 inet 这个属性&#xff0c;那么就没法通过IP地址连接虚拟机。 2&#xff09;接着来查看ens33网卡的配置&#xff1a; vi /etc/sysconfig/network-scripts…

rda冗余分析步骤_群落分析的典范对应分析(CCA)概述

典范对应分析(CCA)与去趋势典范对应分析(DCCA)概述典范对应分析(canonical correspondence analysis&#xff0c;CCA)是单峰约束排序方法&#xff0c;是对应分析(CA)与多元回归的结合&#xff0c;其算法源自冗余分析(RDA)。同RDA&#xff0c;CCA涉及两个数据矩阵&#xff0c;响…

如何输入一个整数逆序输出_如何匹配DSP输入输出信号

mosconi DSP可以通过DSP监察界面查看信号输入及输出的情况。对于主机是全频信号输出在 mosconi DSP的混合调校中进行的匹配&#xff0c;还有主机是主动分频信号输出在 mosconi DSP的混合调校中进行的匹配。若主机部分输出信号是反相(如视频案例)&#xff0c;又该如何匹配信号…