python简单爬虫

news2024/12/26 23:24:38

爬虫真是一件有意思的事儿啊,之前写过爬虫,用的是urllib2、BeautifulSoup实现简单爬虫,scrapy也有实现过。最近想更好的学习爬虫,那么就尽可能的做记录吧。这篇博客就我今天的一个学习过程写写吧。

一  正则表达式

  正则表达式是一个很强大的工具了,众多的语法规则,我在爬虫中常用的有:

.匹配任意字符(换行符除外)
*匹配前一个字符0或无限次
?匹配前一个字符0或1次
.*贪心算法
.*?非贪心算法
(.*?)将匹配到的括号中的结果输出
\d匹配数字
re.S使得.可以匹配换行符

  常用的方法有:find_all(),search(),sub()

  对以上语法方法做以练习,代码见:https://github.com/Ben0825/Crawler/blob/master/re_test.py

二  urllib和urllib2

  urllib和urllib2库是学习Python爬虫最基本的库,利用该库,我们可以得到网页的内容,同时,可以结合正则对这些内容提取分析,得到真正想要的结果。

  在此将urllib和urllib2结合正则爬取了糗事百科中的作者点赞数内容。

  代码见:https://github.com/Ben0825/Crawler/blob/master/qiubai_test.py

三 BeautifulSoup

  BeautifulSoup是Python的一个库,最主要的功能是从网页抓取数据,官方介绍是这样的:
  Beautiful Soup 提供一些简单的、python 式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。
  Beautiful Soup 自动将输入文档转换为 Unicode 编码,输出文档转换为 utf-8 编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Soup 就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。
  Beautiful Soup 已成为和 lxml、html6lib 一样出色的 python 解释器,为用户灵活地提供不同的解析策略或强劲的速度。

  首先:爬取百度百科Python词条下相关的100个页面,爬取的页面值自己设定。

  代码详见:https://github.com/Ben0825/Crawler/tree/master/python_baike_Spider

  代码运行:

  

       

  巩固篇,依据豆瓣中图书的标签得到一个书单,同样使用BeautifulSoup。

  代码详见:https://github.com/Ben0825/Crawler/blob/master/doubanTag.py

  运行结果:  

   以上就是今天学习的一些内容,爬虫真的很有意思啊,明天继续学scrapy!

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

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

相关文章

格式化电脑重装系统怎么操作

​电脑一但中毒的电脑必须重装系统,而且需要格式化后重装系统,才能将病毒铲除,那么如何将电脑格式化后重装系统呢?能够实现电脑格式化重装系统的方法是U盘重装和光盘重装,由于部分电脑没有光驱,建议用U盘&a…

Redis常见集群方案

Redis常见集群方案 Redis集群方案目前主流的有三种,分别是Twemproxy、Codis和Redis Cluster。 Redis Cluster Redis Cluster 集群是去中心化通过客户端分片的结构,集群元数据信息分布在每个节点上,主备切换依赖于多个节点协商选主。 Red…

C++11之lambda表达式

文章目录一、引入原因二、lambda 表达式的语法1. lambda 表达式各部分说明2.捕捉列表说明三、lambda 表达式的本质一、引入原因 如果待排序元素为自定义类型,需要用户定义排序时的比较规则。 比如: struct Goods {string _name; // 名字double _pr…

idea调试npm、tomcat远程服务(包括docker部署方式)

前言 idea调试npm、tomcat远程服务:包括docker部署方式及非docker部署方式 博客地址:芒果橙的个人博客 【http://mangocheng.com】 调试npm项目 1. 新增一个npm项目 2. 配置package.json及启动脚本 3. debug模式启动 远程调试docker部署的项目 1. 配置…

XMLTomcatHttp协议

XML&Tomcat&Http协议 学习目标 了解配置文件的作用了解常见的配置文件类型掌握properties文件的编写规范掌握xml文件的编写了解xml文件的约束掌握xml文件的解析掌握Tomcat的安装掌握Tomcat的使用掌握Tomcat在IDEA中的使用了解HTTP协议的发展历程了解HTTP1.0和HTTP1.1…

ConcurrentHashMap源码阅读笔记:initTable()方法

一、非常重要的sizeCtl属性 initTable()方法的作用是初始化哈希表,初始化哈希表就要有确定哈希表容量、创建哈希表并将哈希表的引用赋值、修改哈希表的阈值等步骤。initTable()方法里面采用了不加锁方式来确保在高并发的环境下创建哈希表的全部步骤都只能由一个线程…

Android入门第57天-使用OKHttp多线程制作像迅雷一样的断点续传功能

简介今天我们将继续使用OkHttp组件并制作一个基于多线程的可断点续传的下载器来结束Android OkHttp组件的所有知识内容。在这一课里我们会在上一次课程的基础上增加SQLite的使用以便于我们的App可以暂存下载时的实时进度,每次下载开始都会判断是覆盖式还是续传式下载…

(3)go-micro微服务项目搭建

文章目录一 微服务项目介绍二 go-micro安装1.拉取micro镜像2.生成项目目录三 项目搭建使用DDD模式开发项目:四 最后一 微服务项目介绍 账户功能是每一个系统都绕不开的一部分,所以本次搭建的微服务项目就是账户微服务项目,其中向外暴露的功能…

【C语言航路】第十站:指针进阶(一)

目录 一、字符指针 二、指针数组 三、数组指针 1.数组指针的定义 2.数组名和&数组名 3.数组指针的使用 四、数组参数、指针参数 1.一维数组传参 2.二维数组传参 3.一级指针传参 4.二级指针传参 五、函数指针 总结 一、字符指针 我们知道指针有一种类型叫做字符…

Vue3新特性

文章目录一 新特性之组合API1.1 ref&reactive1.2 methods1.3 props和context1.4 完整代码&效果演示二 Vue3新特性之生命周期函数(在setup中)三 父子级组件间数据传递3.1 Provide&Inject四 Fragment(碎片)一 新特性之组合API 1.1 ref&re…

XMLHttpRequest和Referer

XMLHttpRequest 对象简介 1999年,微软公司发布 IE 浏览器5.0版,第一次引入新功能:允许 JavaScript 脚本向服务器发起 HTTP 请求。这个功能当时并没有引起注意,直到2004年 Gmail 发布和2005年 Google Map 发布,才引起广…

承蒙时光不弃,做个好人!

落幕 2022年博客之星终于要在今晚2023年1月7日24点整落下帷幕,从上个月28号开始,仿佛经历了一场噩梦,本是抱着随便玩玩的心态报了名,没成想,刚开始自投五星之后竟然显示10几名,那是不是我稍加努力就进前十…

狂揽两千星,速度百倍提升,高性能 Python 编译器 Codon 火了

前言 众所周知,Python 是一门简单易学、具有强大功能的编程语言,在各种用户使用统计榜单中总是名列前茅。相应地,围绕 Python,研究者开发了各种便捷工具,以更好的服务于这门语言。 编译器充当着高级语言与机器之间的…

TensorFlow笔记之单神经元完成多分类任务

文章目录前言一、逻辑回归1.二分类问题2.多分类问题二、数据集调用三、TensorFlow1.x1.定义模型2.训练模型3.结果可视化四、TensorFlow2.x1.定义模型2.训练模型3.结果可视化总结前言 记录分别在TensorFlow1.x与TensorFlow2.x中使用单神经元完成MNIST手写数字识别的过程。 一、…

Linux出现ping: www.baidu.com: 未知的名称或服务解决方法

文章目录解决对象方法先找到网关在Windows下进行VMnet8的配置ping成功Linux出现ping: www.baidu.com: 未知的名称或服务解决方法 解决对象 本文的方法用于各位大佬已经用过以下方法仍然无法ping成功 Linux防火墙已关闭和Windows防火墙已经关闭已经配置好 vim /etc/sysconfig/…

手撕C语言理论知识(上)粗略讲解C语言的部分入门知识

目录 C语言的一些基础知识 操作符简介 Scanf的%[ ] 语句(分支、循环、goto) 函数 C语言的一些基础知识 主函数 - 程序的入口 - main函数有且仅有一个。char - short - int - long - long long - float - double%d - 十进制整型 %u - 无符号整型 %…

【博学谷学习记录超强总结,用心分享|产品经理基础总结和感悟15】

互联网产品设计背后的心理学02:你就是会被其他人的行为所影响一、前言二、实验设计及结果分析三、实验原理四、实验方法总结五、产品设计中的应用六、结束语前文回顾:让人们做出决定并不是信息本身,而是这些信息呈现的背景或情景。我们这个信…

Spring Cloud Alibaba Dubbo(服务远程调用)

一、软件环境 &#xff08;1&#xff09;自己部署服务器 所有软件及服务器自己进行管理提供&#xff0c;可以直接在项目中添加Spring Cloud依赖。推荐 <dependencyManagement> <dependencies> <dependency> <groupId>com.a…

liunx centos9中安装flask并在pycharm中使用图文攻略

liunx centos9中安装flask并在pycharm中使用图文攻略1.首先在liunx的终端中输入2.安装好flask之后就在pycharm创建新的项目处添加flask项目3.点击绿色三角箭头开始运行flask项目4. 然后登录ip地址就出现Hllo world就代表flask环境搭建完成需要注意事项1.首先在liunx的终端中输入…

ngx_thread_pool_init()

ngx_thread_pool_cycle()函数的主要工作是从待处理的任务队列中获取一个任务&#xff0c;然后调用任务对象的handler()函数处理任务&#xff0c;完成后把任务放置到完成队列中&#xff0c;并通过ngx_notify()通知主线程 手写线程池与性能分析 - 知乎 pthread_cond_wait函数的原…