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

【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 requestsfrom lxml import etreeimport 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】数据截图

原文地址:https://blog.csdn.net/qq_36759224/article/details/101230024

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

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

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

  1. Python3 爬虫实战 — 猫眼电影TOP100【requests、lxml、Xpath、CSV 】

    爬取时间:2019-09-23 爬取难度:★☆☆☆☆☆ 请求链接:https://maoyan.com/board/4 爬取目标:猫眼电影 TOP100 的电影名称.排名.主演.上映时间.评分.封面图 ...

  2. 【python爬虫】猫眼电影TOP100电影封面下载

    在上次爬取信息的基础上下载图片. 下载挺容易的 在封面命名上画了大笔时间..... import requests import bs4 from bs4 import BeautifulSoup i ...

  3. word中如何删除换行符(多余的回车)

    word中如何删除换行符 Ctrl+H,调出"查找和替换"窗口,分别输入^p(软回车)和^l(硬回车)符. [查找内容分别为:"^l"(软回车)和"^ ...

  4. python怎么去掉换行符_如何在Python中删除尾部换行符?

    如何在Python中删除尾部换行符? 什么是Perl的chomp函数的Python等价物,如果它是换行符,它会删除字符串的最后一个字符? 26个解决方案 1473 votes 尝试方法lstrip() ...

  5. html钟无序列表不换行,风格无序列表中奇怪的换行符?

    我遇到了一个非常奇怪的特定问题,我将尝试将代码粘贴到此处,而不会将问题混淆得太多.我有一个无序的列表,它使用样式表将每个列表项放入一个小方块中......但是在某个点之后,该行会打破一切.如果你添加或 ...

  6. php 替换某一行,PHP中如何替换换行符?

    原标题:PHP中如何替换换行符? 最近在进行时,需要进行文件内容比对,为了排除换行符对文件内容的影响,总结了一下PHP中替换换行符的几种方法: 第一种:使用str_replace 来替换换行 $str ...

  7. python中的带有换行符的字符串在juypter中直接输入、print与写入文件的区别

    为什么会有这么个问题呢? 因为我在jupternotebook中输入带有换行符的字符串\n,但最终结果并没有体现换行的效果,这个出乎我意料,于是就有了这个记录. 实验结果: 第一种:jupternot ...

  8. C# 中的回车换行符 表示

    在 C# 中,我们用字符串 "/r/n" 表示回车换行符. string str = "第一行/r/n第二行"; 但是我们更推荐 Environment.New ...

  9. 在java中转义符 n代表什么_在Java中,表示换行符的转义字符是()。 A.\nB.\fC.n D.\ddd...

    在Java中,表示换行符的转义字符是(). A.\nB.\fC.n D.\ddd 更多相关问题 单选(2分) Who\\\'s one the biggest challenges in design ...

最新文章

  1. java求数组中满足给定和的数对,【加试题】数组a中有50个互异的整数,已按升序排列。给定一个正整数key,寻找数组a中是否有一对数的和等于给定的数key,算法如下:...
  2. 推导LookAt函数定义的视图矩阵
  3. tessorflow实战
  4. 2017 php7 使用率,让PHP7达到最高性能的几个Tips
  5. ajax的url可以用变量吗6,如何使用变量设置 Ajax Url
  6. 解析Infopath生成的XSN结构
  7. 解决express video 手机无法播放的问题
  8. Oracle Minus关键字
  9. 计算机报名忻州考点,2020山西省考忻州考区考点安排
  10. poj 2240 Arbitrage(bellman-ford spfa 判断正环)
  11. 算法不会,尚能饭否之队列
  12. paper 108:系统学习数字图像处理之图像复原与重建
  13. String的startWith()和endWith()
  14. 数据结构视频教程 -《[北大张铭 精品课程版]数据结构与算法(C++)》
  15. 微信小程序跳转视频号直播
  16. 360修复高危漏洞可以修复吗_怎么关闭360高危漏洞修复提醒?
  17. 提升用户体验?指示性设计元素不可或缺
  18. Python实验报告
  19. play框架使用起来(6)
  20. 微信朋友圈爬虫python_python爬虫24 | 搞事情了,用 Appium 爬取你的微信朋友圈。...

热门文章

  1. 从零打造在线版H5页面生成器
  2. 和朱晔一起复习Java并发(五):并发容器和同步器
  3. Python之字符串转换为日期、结合时区的日期操作
  4. C++小项目-吃豆子游戏
  5. 独立线性度 最佳直线
  6. [置顶] Android的IPC访问控制设计与实现
  7. DDD:DomainEvent、ApplicationEvent、Command
  8. 离线使用iPhone SDK文档的方法
  9. 面试题(C++09:Autodesk)
  10. python3seek_Python seek()和tell()函数详解