爬虫想要的HTML

news2024/11/20 8:35:56

我的个人博客主页:如果’'真能转义1️⃣说1️⃣的博客主页
关于Python基本语法学习---->可以参考我的这篇博客:《我在VScode学Python》
接下来回更新一个关于urllib的文章

爬虫一个新浪博客地址

import urllib.request

page = 1
url = [" "] * 100

# Open file for writing
with open("urls418.txt", "w") as f:
    while page <= 2:
        cont = urllib.request.urlopen("https://blog.sina.com.cn/s/articlelist_1219548027_0_" + str(page) + ".html").read()
        cont = str(cont)
        title = cont.find("a title")
        href = cont.find("href=", title)
        html = cont.find(".html", href)

        i = 0
        a = 1
        #find()方法在未找到子字符串时返回-1,因此值-1被用作一种约定,以指示cont字符串中缺少子字符串。
        #在while循环中,title、href和html变量被更新为相应子字符串的下一个出现的索引。
        # 如果这些变量中的任何一个是-1,则表示相应的子字符串未找到,循环应该终止。因此,当超出了范围时,就会返回-1。
        while i <= 50 and title != -1 and href != -1 and html != -1:
            url[i] = cont[href + 6:html + 5]
            url[i] ="https:" + url[i]
            print("a=",a,url[i])

            # Write URL to file
            f.write(url[i] + "\n")

            title = cont.find("a title", html)
            href = cont.find("href=", title)
            html = cont.find(".html", href)
            i = i + 1
            a=a+1
        else:
            f.write("over\n")
            print("over")
        page = page + 1

print("all over")

解释:

它的目标是从一个网站中爬取URL并将它们写入文件。使用urllib.request模块进行HTTP请求。代码将page变量初始化为1,将url列表初始化为100个空字符串。然后使用with语句以写模式打开名为"urls418.txt"的文件,这可以确保在写入后正确关闭文件。

然后,代码进入一个while循环,只要page小于或等于2,就会一直运行。在循环内部,代码使用urllib.request.urlopen()对特定URL进行HTTP请求,并将响应读入字符串变量cont中。然后,代码使用find()方法在cont中搜索字符串"a title"的第一次出现的索引,并将其赋值给变量title。然后,它从title索引开始搜索字符串"href=“的第一次出现,并将其赋值给变量href。最后,它从href索引开始搜索字符串”.html"的第一次出现,并将其赋值给变量html。

然后,代码进入一个嵌套的while循环,只要i小于或等于50且title、href和html不等于-1,就会一直运行。在循环内部,代码使用字符串切片从cont中提取URL,并将其分配给url列表中的索引i。然后,它在URL前面添加"https:"并将其打印到控制台。代码还使用write()方法将URL写入先前打开的文件。然后,代码将title、href和html变量更新为相应字符串在cont中的下一个出现的索引,并将i和a分别增加1。

如果while循环由于i超过50或任何变量等于-1而终止,则代码将字符串"over"写入文件并将其打印到控制台。然后,将page变量增加1,并重复循环,直到page大于2。最后,代码将字符串"all over"打印到控制台。

如果要修改代码以从不同的网站中爬取URL,则可以更改传递给urllib.request.urlopen()的URL。如果要将URL写入不同的文件,则可以更改传递给open()函数的文件名。如果要修改要爬取的URL的最大数量,则可以更改嵌套的while循环中的i <= 50条件的值。如果要修改要爬取的页面范围,则可以更改外部while循环中的条件。

注意事项

urllib.request访问请求
需要 file记录内容

同样的,将里面的参数改一下知道里面是有什么样的内容了,改成< p >和< /p >的获取,就是获取内容了。

find()方法在未找到子字符串时返回-1,因此值-1被用作一种约定,以指示cont字符串中缺少子字符串。

在这里插入图片描述
有些甚至要用到正则表达式:

  res = requests.get(url,headers=headers)
    titles = re.findall('<h1>(.*?)</h1>', res.text, re.S)
    numbers = re.findall('<div class="creab">.*?<span>(.*?)</div>',res.text,re.S)
    contents = re.findall('<p>(.*?)</p>',res.content.decode('GBK'),re.S)
#这里就是你需要的了




 for title, number,content in zip(titles,numbers,contents):
        f.write(title + '\n')
        f.write(number + '\n')
        f.write(content+'\n')   #正则获取数据写入txt文件中

zip函数用于并行迭代多个列表。在这种情况下,zip用于同时迭代titles、numbers和contents列表。

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

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

相关文章

如何在线录制视频?教您一个简单的方法!

案例&#xff1a;怎样实现在线录屏&#xff1f; 【听朋友说在线录屏更加便捷&#xff0c;我也想学习如何在线录制电脑屏幕。有没有小伙伴有在线录屏的经验&#xff0c;求好心人给一个简单的方法&#xff01;】 在今天的数字时代&#xff0c;我们经常需要录制电脑屏幕来制作教…

【C++】AVL树的插入实现(详解旋转机制)

✍作者&#xff1a;阿润菜菜 &#x1f4d6;专栏&#xff1a;C 文章目录 AVL树的定义AVL树的旋转机制1.左旋操作 --- 新节点插入较高右子树的右侧---右右&#xff1a;左单旋2.右旋操作 --- 新节点插入较高左子树的左侧——左左&#xff1a;右单旋3.左右双旋 --- 新节点插入较高左…

JMeter开发自动化接口测试脚本练习

一、打开浏览器代理服务器设置 我这里用的是360浏览器&#xff0c;打开浏览器代理服务器设置&#xff0c;端口要与jmeter中的端口设置保持一致哦。 二、JMeter设置代理 JMeter设置代理&#xff08;jmeter中的端口要与360浏览器端口设置保持一致哦。&#xff09; 三、启动代理运…

BM6 判断链表中是否有环

判断链表中是否有环_牛客题霸_牛客网 (nowcoder.com) 双指针&#xff0c;快指针一次走两步&#xff0c;慢指针一次走一步&#xff0c;快指针不为空且快指针的下一个指针不为空的情况下 若快慢指针相遇即位有环。 /** * Definition for singly-linked list. * struct ListNode {…

基于RK3588的8K智能摄像机方案设计

设计了一款基于石墨烯散热的8 K智能摄像头&#xff0c;主控采用瑞芯微RK3588&#xff0c;传感器采用索尼IMX435&#xff0c; 通过HDMI2.1将传感器采集到的图像发送到8 K显示器&#xff0c;实现端到端的8 K呈现&#xff0c;为了确保摄像头性能稳定&#xff0c;本 设计采用石墨烯…

ETL到底是什么?

各位数据的朋友&#xff0c;大家好&#xff0c;我是老周道数据&#xff0c;和你一起&#xff0c;用常人思维数据分析&#xff0c;通过数据讲故事。 前段时间和大家聊了一个话题&#xff0c;就是为什么要用构建数据仓库&#xff0c;而不是直连数据源的方式开发报表&#xff1f;通…

七、MyBatis自定义映射resultMap

文章目录 七、自定义映射resultMap7.1 resultMap处理字段和属性的映射关系7.2 多对一映射处理级联方式处理映射关系使用association处理映射关系分步查询 7.3 一对多映射处理collection分步查询 本人其他相关文章链接 七、自定义映射resultMap 注意&#xff1a;下面两行表看看…

公司新来的00后真是卷王,工作没2年,跳槽到我们公司起薪18K都快接近我了

说00后躺平了&#xff0c;但是有一说一&#xff0c;该卷的还是卷。这不&#xff0c;前段时间我们公司来了个00后&#xff0c;工作都没两年&#xff0c;跳槽到我们公司起薪18K&#xff0c;都快接近我了。后来才知道人家是个卷王&#xff0c;从早干到晚就差搬张床到工位睡觉了。 …

分布式光伏发电大规模应用,运维难题如何解?

国家能源局数据显示&#xff0c;2022年我国光伏新增装机达 87.4GW&#xff0c;同比59%&#xff0c;其中&#xff1a;集中式装机达36.29GW&#xff0c;同比41.8%&#xff1b;分布式装机达51.11GW&#xff0c;同比207.9%&#xff0c;已连续两年超过集中式电站。 近年来&#xff…

如何在Windows系统中恢复丢失的分区?

有些时候&#xff0c;您突然发现自己的分区丢失&#xff0c;并且无法在Windows文件资源管理器中看到它&#xff0c;进入磁盘管理工具&#xff0c;丢失的分区也将被显示为额外的未分配空间&#xff0c;而不是原始分区。如果您遇到了与上述案例类似的情况&#xff0c;某个分区丢失…

AntDB数据库受邀参加第六届上海人工智能大会,分享AIGC时代核心交易系统升级方案

近日&#xff0c;第六届上海人工智能大会春季论坛圆满落幕。大会以“数智互联&#xff0c;瞰见未来”为主题&#xff0c;邀请了来自国内外十余个国家和地区的学术界顶级学者和业内知名企业的技术大咖&#xff0c;探讨人工智能的学术、人才、技术、行业发展痛点。亚信科技AntDB数…

新闻月刊 | GBASE 4月市场动态一览

产品动态 4月&#xff0c;GBASE南大通用大规模分布式并行数据库GBase 8a MPP Cluster中标人保财险“2022年基础软件产品及服务采购”项目。这是自2019年GBASE与人保财险达成合作以来支持建设的第三期项目。项目上线后&#xff0c;将极大满足人保财险大数据中心及研发中心的增量…

学网络安全怎么挖漏洞?怎么渗透?

前言 有不少阅读过我文章的伙伴都知道&#xff0c;我从事网络安全行业已经好几年&#xff0c;积累了丰富的经验和技能。在这段时间里&#xff0c;我参与了多个实际项目的规划和实施&#xff0c;成功防范了各种网络攻击和漏洞利用&#xff0c;提高了安全防护水平。 也有很多小…

css div上下左右排序

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>div上下左右排序</title> </head> <style>.div-box {display: grid;grid-auto-flow: column; /* 排序方式&#xff1a; column-先列…

编译链接再认识+gdb认识+makefile了解+缓冲区的理解+进度条的实现

索引 一. 编译链接再认识1.预处理2.编译3.汇编4.链接1.静态链接2.动态链接 二.gdb三.makefile/make四.缓存区的理解五. 进度条的实现 一. 编译链接再认识 主要针对gcc展开 一个文件从源文件编译成可执行文件大致要经历四个步骤 预处理&#xff08;进行宏替换&#xff09;编译…

office@word官方文档查看@审阅@批注@修订

文章目录 office官方文档microsoft office 文档教程语言切换文档官网word官方培训资源找到合适的文档 word共享共同创作的相关支持word审阅重点修订批注审阅窗格右侧边窗格修订选项区分标记和修订 officeword官方文档查看审阅批注修订 office官方文档 microsoft office 文档教…

国家信息安全水平考试中NISP三级(专项)网络安全证书介绍

国家信息安全水平考试中NISP三级&#xff08;专项&#xff09;网络安全证书介绍 ​1、什么是NISP? 国家信息安全水平考试&#xff08;National Information Security Test Program&#xff0c;简称NISP&#xff09;&#xff0c;是由中国信息安全测评中心实施培养国家网络空间…

c++ 11标准模板(STL) std::vector (六)

定义于头文件 <vector> template< class T, class Allocator std::allocator<T> > class vector;(1)namespace pmr { template <class T> using vector std::vector<T, std::pmr::polymorphic_allocator<T>>; }(2)(C17…

I/O常用扩展方法与芯片

主要有四种I/O扩展方法&#xff1a; (1)并行总线扩展的方法 (2)串行口扩展方法 (3)I/O端口模拟串行方法 (4)通过单片机内I/O的扩展方法 IO口扩展可以通过以下芯片来实现&#xff1a; 1、并行扩展芯片&#xff0c;比如8255 &#xff0c;8155等。 2、锁存器或缓冲器来扩展&#x…

README.md编写

一、摘要 项目一般会有个描述文件&#xff0c;对于项目的代码来讲&#xff0c;这个描述就是README.md文件&#xff0c;可以描述各模块功能、目录结构等。该文件可以方便让人快速了解项目的代码结构和功能。当然&#xff0c;若要深层次的了解项目&#xff0c;就得看项目总体的需…