当前位置: 首页 > article >正文

python网页抓取-urllib、Beautiful Soup-并生成表格

python网页抓取,通过程序下载网页并从中提取信息的过程。

  1. urllib。使用urllib来获取网页的HTML代码,再使用正则表达式或其他技术从中提取信息。
    代码运行时,出现了 ‘utf-8’ codec can’t decode byte 0x8b in position 1: invalid start byte 这个错误提示。原因是网站返回的数据是经过压缩的,压缩格式是Gzip格式,需要通过相应算法解压后使用。
    ‌Python的gzip模块主要用于压缩和解压缩数据。
    gzip.compress()函数可以压缩数据。
    gzip.decompress()函数可以解压缩数据。gzip.compress()示例:
    gzip.decompress()示例:最终正确的抓取到数据的代码是:注意各个type的判断和转换。
  2. Beautiful Soup。专为网页抓取而设计的Beautiful Soup库。接下来将生成的文件通过这个网页(JSON转Excel-在线JSON转换为XLS可自定义输入或上传JSON-即时工具)的工具,转换成表格形式导出。
  3. 补充。
    1. 正则。
      1. compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象

      2. re.match 只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None.

      3. re.search 匹配整个字符串,直到找到一个匹配。

      4. re.findall 在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果有多个匹配模式,则返回元组列表,如果没有找到匹配的,则返回空列表。
        注意:match和search是匹配一次,findall匹配所有。
        eg:
        单个匹配模式:pattern = re.compile(r'\d+')   # 查找数字
        result2 = pattern.findall('runoob 123 google 456')   #结果:['123', '456']

        多个匹配模式:result = re.findall(r'(\w+)=(\d+)', 'set width=20 and height=10')  #结果:[('width', '20'), ('height', '10')]

      5. re.finditer 在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。(迭代是,是访问集合元素的一种方式。是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。两个基本的方法:iter() 和 next()。)

      6. re.split 按照能够匹配的子串将字符串分割后返回列表。正则表达式模式\W表示匹配非数字字母下划线。\W+常用于匹配那些不需要的字符,例如在处理文本数据时去除空格、标点符号等。eg:

        p = re.split('\W+', 'rb,rub,runb.')

        #\W+找到了,,.三个符合的匹配,三个标点三刀切成了四块,最后一个是''

        print(p) #['rb', 'rub', 'runb', '']

      7. re.sub 替换字符串中的匹配项。eg:

        text = "Hello,world! This is a test."

        clean_text = re.sub(r'\W+', ' ', text) #将所有匹配\W+的部分替换为空格字符串,去除所有非字母数字字符。

        print(clean_text) # 输出: Hello world This is a test


http://www.kler.cn/a/385215.html

相关文章:

  • day20-21之间的项目实战:若依ruoyi开发(可以跳过)
  • 使用STM32F407xx的GPIO引脚实现跑马灯效果的详细步骤
  • Linux驱动开发(3):字符设备驱动
  • 动态规划理论基础和习题【力扣】【算法学习day.25】
  • 使用containerd搭建kubernetes集群
  • 中肿团队提出的“免疫三明治”(放疗+化疗+免疫治疗),成功登上柳叶刀肿瘤|顶刊精析·24-11-08
  • 程序怎么变进程
  • Flutter中文字体设置指南:打造个性化的应用体验
  • A20红色革命文物征集管理系统
  • Python yeild关键字
  • 推荐一款ETCD桌面客户端——Etcd Workbench
  • 【NLP自然语言处理】深入探索Self-Attention:自注意力机制详解
  • RocketMQ延迟消息机制
  • 【架构论文-2】架构设计中存在的问题和改进方向
  • Linux/Unix echo命令
  • SAP ABAP开发学习——登录语言问题
  • springboot中使用jdbc查询数据库列表时,会出现数据库null值转换过程,很容易出现的错误
  • Oracle 第30章:最佳实践与案例研究
  • JVM 由多个模块组成,每个模块负责特定的功能
  • 详解Rust标准库:BTreeMap
  • go 集成gorm 数据库操作
  • npm install慢
  • ORACLE 删除archivelog日志
  • 最佳实践:如何实现函数参数之间的TS类型相依赖和自动推断
  • 基于微信小程序的电子购物系统的设计与实现(lw+演示+源码+运行)
  • Vue动态计算Table表格的高度