爬虫想要的HTML

news/2024/7/19 12:37:35 标签: 爬虫, html, python

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

html" title=爬虫>爬虫一个新浪博客地址

python">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字符串中缺少子字符串。

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

python">  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.niftyadmin.cn/n/290221.html

相关文章

C结构简单而不失强大的表格

2023年了&#xff0c;想必已经不会有人对嵌入式开发中“数据结构&#xff08;Data Structure&#xff09;”的作用产生疑问了吧&#xff1f;无论你是否心存疑惑&#xff0c;本文都将给你一个完全不同的视角。 每每说起数据结构&#xff0c;很多人脑海里复现的一定是以下的内容&…

vmware 安装Kylin-Desktop-V10-SP1-General-Release-2203-X86_64.iso

下载 官网&#xff1a;国产操作系统、银河麒麟、中标麒麟、开放麒麟、星光麒麟——麒麟软件官方网站 (kylinos.cn) 点击桌面操作系统 选择No1 点击申请试用 填写相关信息&#xff0c;点击立即提交&#xff0c;就会获取到下载连接&#xff0c; 点击下载按钮等待下载完成即可 安…

网络安全等级保护安全设计技术要求示例解读

安全服务体系建设主体内容_luozhonghua2000的博客-CSDN博客 在安全服务体系建设涉及到落地技术要求,这篇我们解读需要哪些具体技术要求?又能得到什么工作启发呢 网络安全等级保护安全设计技术要求主要包括 7个层次:1、管理层: 应以安全策略为基础,明确网络负责人的职责,…

util.callbackify

util.callbackify(original) 将 async 异步函数&#xff08;或者一个返回值为 Promise 的函数&#xff09;转换成遵循异常优先的回调风格的函数&#xff0c;例如将 (err, value) > ... 回调作为最后一个参数。 在回调函数中&#xff0c;第一个参数为拒绝的原因&#xff08;如…

字节跳动岗位薪酬体系曝光,看完感叹:不服不行

曾经的互联网是PC的时代&#xff0c;随着智能手机的普及&#xff0c;移动互联网开始飞速崛起。而字节跳动抓住了这波机遇&#xff0c;2015年&#xff0c;字节跳动全面加码短视频&#xff0c;从那以后&#xff0c;抖音成为了字节跳动用户、收入和估值的最大增长引擎。 自从字节…

如果让ChatGPT来写代码他会怎么写

今天突发奇想想试一下如果让ChatGPT来写51代码会怎么样呢&#xff1f;今天我们就一起来看一下他会怎么写51代码&#xff0c;机器人写出来的代码到底可不可以运行&#xff1f; 在开始之前我们首先让ChatGPT做一个自我介绍吧&#xff01; 问&#xff1a; ChatGPT介绍一下自己吧…

《CTFshow-Web入门》08. Web 71~80

Web 71~80 web71知识点题解 web72知识点题解 web73题解 web74题解 web75知识点题解 web76题解 web77知识点题解 web78知识点题解 web79题解 web80知识点题解 ctf - web入门 web71 知识点 ob_get_contents()&#xff1a;得到输出缓冲区的内容。ob_end_clean()&#xff1a;清除…

Mysql经典面试题20道

我整理的必刷SQL经典题目 SQL语句在工作与面试时都必不可少&#xff0c;下面我整理了20道题目供大家练习&#xff0c;常见的使用方法和开窗函数都有考察&#xff0c;来测测你的sql技能是否过关。 一、创建表 共有4个表&#xff0c;分别是学生信息表、课程表、老师信息表和成…