python代码一行过长怎么办,python中一行代码太长

news2024/11/24 3:03:39

这篇文章主要介绍了python每行代码长度不能超过100个字符,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下。

30行python代码实现豆瓣电影排行爬取

  • 实现过程
  • 完整代码

今天我们想实现豆瓣电影排行爬取
在这里插入图片描述
如上图所示,我们希望将电影的相关信息通过爬虫爬取下来,并写入文档。

实现过程

#导入库
import requests
from lxml import etree

以上需要安装requests和lxml两个库,可以通过库安装完成

headers={
      'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36'
      }
j=1#用于计算电影数
fl=open("电影排行.doc","w",encoding='utf-8')

上述实现HTTP请求头headers和文档的建立

for i in range(0,250,25):#i表示页数,1页25影片
      url='https://movie.douban.com/top250?start='+str(i)+'&filter='
      response=requests.get(url,headers=headers)
      text=response.text
      html=etree.HTML(text.encode('utf-8'))
      ul=html.xpath('//div[@class="info"]')
      for div in ul:
            t="".join(div.xpath('./div[@class="hd"]/a/span[@class="title"]/text()'))
            s="".join(div.xpath('./div[@class="hd"]/a/span[@class="other"]/text()'))
            title=t+s
            d="".join(div.xpath('./div[@class="bd"]/p/text()'))
            director=d.replace("              ","").replace("\n","").replace("主演","\n主演")
            quote="".join(div.xpath('./div[@class="bd"]/p[@class="quote"]/span[@class="inq"]/text()'))
            content=str(j)+"."+title+"\n"+director+"\n主题:"+quote+"\n"
            fl.write(content)
            j=j+1
fl.close()

上述代码就实现了排行的爬取小发猫伪原创,python下载需要花钱吗。
其中:

url='https://movie.douban.com/top250?start='+str(i)+'&filter='

可以通过翻页可以发现,此排行榜每一页的的url格式都是以上方式。

response=requests.get(url,headers=headers)
      text=response.text
      html=etree.HTML(text.encode('utf-8'))
      ul=html.xpath('//div[@class="info"]')
      for div in ul:
            t="".join(div.xpath('./div[@class="hd"]/a/span[@class="title"]/text()'))
            s="".join(div.xpath('./div[@class="hd"]/a/span[@class="other"]/text()'))
            title=t+s
            d="".join(div.xpath('./div[@class="bd"]/p/text()'))
            director=d.replace("              ","").replace("\n","").replace("主演","\n主演")
            quote="".join(div.xpath('./div[@class="bd"]/p[@class="quote"]/span[@class="inq"]/text()'))

以上代码部分都是实现对文本内容进行定位,这个需要通过右击鼠标,选择检查,查看html代码找到。
在此部分中使用.join()函数是将文本内容进行连接
具体.join()函数的使用方法如下:

#Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。
str = "-";
seq = ("a", "b", "c"); # 字符串序列
print (str.join( seq ));
#输出:a-b-c

在此部分中使用.replace()函数是将文本内容进行替换
具体.replace()函数的使用方法如下:

#Python replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。
str = "this is string example....wow!!! this is really string";
print(str.replace("is", "was"));
print(str.replace("is", "was", 3));
#输出:
#thwas was string example....wow!!! thwas was really string
#thwas was string example....wow!!! thwas is really string

完整代码

import requests
from lxml import etree
headers={
      'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36'
      }
j=1#用于计算电影数
fl=open("电影排行.doc","w",encoding='utf-8')
for i in range(0,250,25):#i表示页数,1页25影片
      url='https://movie.douban.com/top250?start='+str(i)+'&filter='
      response=requests.get(url,headers=headers)
      text=response.text
      html=etree.HTML(text.encode('utf-8'))
      ul=html.xpath('//div[@class="info"]')
      for div in ul:
            t="".join(div.xpath('./div[@class="hd"]/a/span[@class="title"]/text()'))
            s="".join(div.xpath('./div[@class="hd"]/a/span[@class="other"]/text()'))
            title=t+s
            d="".join(div.xpath('./div[@class="bd"]/p/text()'))
            director=d.replace("              ","").replace("\n","").replace("主演","\n主演")
            quote="".join(div.xpath('./div[@class="bd"]/p[@class="quote"]/span[@class="inq"]/text()'))
            content=str(j)+"."+title+"\n"+director+"\n主题:"+quote+"\n"
            fl.write(content)
            j=j+1
fl.close()

实现效果:
在这里插入图片描述

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

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

相关文章

四、Linux常用命令(一)

1、ls命令 (1)ls: list,列表。 (2)作用:使用列表把当前文件夹下所有文件显示出来。 (3)ls -a: 显示所有文件,包括隐藏文件。 (3)ls -l: 显示文件的详细信息。 (3)显示所有文件且显示详细信息,以下四种方式都可以。 ls -a -l…

腾讯云2核2g轻量应用服务器能容纳多少人?

腾讯云轻量应用服务器2核2g能容纳多少人?轻量应用服务器2核2g配置自带4M公网带宽,以网站应用为例,假设优化后的网页平均大小为60KB,2核2G4M带宽轻量服务器可以支持10个并发数,即同时10个人在1秒内同时打开网站&#xf…

Visual Studio 2019 解决scanf函数报错问题

前言 Visual Studio 2019 解决scanf函数报错问题 博主博客链接:https://blog.csdn.net/m0_74014525 关注博主,后期持续更新系列文章 *****感谢观看,希望对你有所帮助***** 系列文章 第一篇:Visual Studio 2019 详细安装教程&…

软工导论知识框架(八)面向对象设计风格

一.面向对象实现 把面向对象设计结果翻译成面向对象程序测试并调试面向对象的程序 二.程序设计语言 所有语言都可完成面向对象实现,但效果不同。 使用非面向对象语言编写面向对象程序,则必须由程序员自己把面向对象概念映射到目标程序中。 1.将来能够占…

Flutter源码分析笔记:Widget类源码分析

Flutter源码分析笔记 Widget类源码分析 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at: https://jclee95.blog.csdn.netEmail: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_28550263/article/details/132259681 【介绍】&#x…

JZ37序列化二叉树

题目地址:序列化二叉树_牛客题霸_牛客网 题目回顾: 解题思路: 首先,序列化就是将二叉树的节点值放入一个字符串中,这里可以按照前序遍历的思路来进行操作,谦虚遍历是:根左右的情况,…

Java 集合详解

目录 1.集合体系结构 2.Collection集合 2.1 Collection集合 2.1.1 Collection基本方法 2.1.2 Collection遍历方式 2.1.2.1 迭代器遍历 2.1.2.2 增强for循环 2.1.2.3 Lambda表达式 3.List集合 3.1 List集合的基本方法 3.2 List集合的遍历方式 4.数据结构 4.1 数据结…

设计模式之七:适配器模式与外观模式

面向对象适配器将一个接口转换成另一个接口,以符合客户的期望。 // 用火鸡来冒充一下鸭子class Duck { public:virtual void quack() 0;virtual void fly() 0; };class Turkey { public:virtual void gobble() 0;virtual void fly() 0; };class TurkeyAdapter :…

52.Linux学习day02 基础命令详解2

目录 Linux常见的基础命令 1.cp 2.mv 3.rm 4.find 5.grep 6.管道 | 7.wc 8.su 9.关机与重启 10.runleve Linux常见的基础命令 1.cp 用于复制文件或目录 使用 cp 命令的基本格式如下: cp [选项] 源文件 目标文件或目录选项:cp 命令支持一些选…

Django模板

文章目录 模板Template实践 模板Template 在Django框架中,模板是可以帮助开发者快速生成呈现给用户页面的工具 模板的设计方式实现了我们MVT中VT的解耦(M: Model,V:View,T:Template),VT有着N:M的关系,一个V可以调用任…

接口自动化测试-Requests模块实战详解,一篇打通...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 什么是requests&a…

Postman下载教程

目录 下载 安装 注意事项 看到很多小伙伴在问 Postman 下载的相关问题,花时间整理了下,下面教新入门的小伙伴如何去下载 Postman。 开始前我们可以先了解下:Postman 简介 下载 第一步:进入 Postman 官网 首先,我…

机器学习终极指南:特征工程(02/2) — 第 -2 部分

接上文:机器学习终极指南:特征工程(01/2) 五、处理不平衡数据 处理不平衡的数据是机器学习的一个重要方面。不平衡数据是指目标变量的分布不均匀,并且与另一个类相比,一个类的代表性不足。这可能导致模型…

NeuS环境配置

TypeError: Descriptors cannot not be created directly. pip install --upgrade protobuf pip install --upgrade tensorboard运行 python exp_runner.py --mode train --conf ./confs/wmask.conf --case bmvs_bearRuntimeError: indices should be either on cpu or on th…

二级考python和c语言哪个好,计算机二级python和c

大家好,小编来为大家解答以下问题,二级python和二级c语言哪个更吃香一些,二级python和二级c语言哪个更吃香一点,今天让我们一起来看看吧! 计算机二级貌似只是在校园里的自嗨,出来工作后并没有觉得这个证书有…

分布式事务原子性-TCC

一、分布式事务-原子性 随着数据量不断的变大,单机所能处理的数据总归是有上限的,所以现阶段分布式的应用系统在各个领域中遍地生花。接下来我们就来聊一下分布式系统中非常重 要的特性分布式事务的原子性功能。之前没有了解过分布式相关知识的读者可以…

一文带你迅速了解下Spring中的AOP

1. 什么是AOP? AOP(Aspect Oriented Programming):面向切面编程。 面向切面编程是一种思想,其实就是对某一类事情进行统一的处理。而 SpringAOP就是一种AOP的具体实现的框架。这就好比 IOC 和 DI 一样的关系。 上述就是对登录功…

Excel(1):表头或列头冻结

1.需求 对于较大的excel,通常需要固定一部分内容,另一份内容为可翻动。 2.解决方式 在视图中选择冻结窗格,需要注意的是,选择冻结窗格时,窗格的左上方的表格区域是固定不动的,只可以向下或者向右活动。

NPM与外部服务的集成(上)

目录 1、关于访问令牌 1.1 关于传统令牌 1.2 关于粒度访问令牌 2、创建和查看访问令牌 2.1 创建访问令牌 在网站上创建传统令牌 在网站上创建粒度访问令牌 使用CLI创建令牌 CIDR限制令牌错误 查看访问令牌 在网站上查看令牌 在CLI上查看令牌 令牌属性 1、关于访问令…

Ubuntu22关闭中上方弹出的消息提醒,Ubuntu22关闭开机后中上方弹出的消息提醒:logged in as a privileged user

一、问题描述 Ubuntu22关闭中上方弹出的消息提醒,Ubuntu22关闭开机后中上方弹出的消息提醒:logged in as a privileged user 二、问题分析 此弹出框为消息通知提示,关闭相应的消息通知即可 三、解决方案 1、打开设备 2、打开消息通知&…