小白python爬虫基础教程(看这一篇就完了)

爬虫的五个步骤:

1)需求分析,找到需求相关的网址

2)获取网址的返回信息(urllib,requests)

3)定位需要的信息所在位置(re正则表达式,XPATH, CSS selector)

4)内容的存储 (open,pymysql,pymongo)

第一步,观察http的包,使用requests的包,get,post

包头中重要的信息描述:

1)cookie:能够存储一些服务器端的信息,与session共同完成身份标志的工作。

2)user-agent:标签

3)referer:从那个页面跳转过来的。

开始第一个爬虫案例吧,

import requests
url='http://www.baidu.com'
response=requests.get(url)
print(response.text)
#返回内容遇到乱码,是encoding的问题
response.encoding='utf-8'
print(response.text)

 运行结果如下图所示,第一个print显示乱码,加入encoding之后再print正常显示

#返回html信息的二进制(bytes)类型,response.content

print(response.content)

输出如下内容:最后一步保存到文件系统

得到所想要的网站html文件。

完整代码如下:

import requests
url='http://www.baidu.com'
response=requests.get(url)
print(response.text)
#返回内容遇到乱码,是encoding的问题
response.encoding='utf-8'
print(response.text)
#返回html信息的二进制(bytes)类型,response.content
print(response.content)
#最后一步保存到文件系统
with open('baidu.html','wb') as f:
    f.write(response.content)

 当学习Python爬虫时,以下是一个入门学习大纲供参考:

1. 基础知识:

Python基础语法:学习Python的基本语法、变量、数据类型、流程控制、函数等基础知识。

HTML基础:了解HTML标签的基本结构和常见标签的使用。

HTTP协议:熟悉HTTP请求和响应的基本结构,了解HTTP的GET、POST等常用方法

2. 网络请求:

requests库:学习如何使用Python中的requests库发送HTTP请求,并获取响应数据。

网络爬虫框架:了解Scrapy等常用的网络爬虫框架,学习如何使用框架进行数据爬取

3. 数据解析和提取:

正则表达式:学习正则表达式的基本语法和用法,用于从HTML文本中提取所需信息。

BeautifulSoup库:掌握BeautifulSoup库的使用,用于解析HTML文档,并提供简单的数据提取方法。

XPath:了解XPath语法,学习使用XPath从HTML文档中提取数据。

4. 数据存储:

文件存储:学习将爬取到的数据存储到本地文件中,如CSV、JSON等格式。

数据库存储:了解如何将爬取到的数据存储到数据库中,如MySQL、MongoDB等。

5. 反爬虫和数据清洗:

反爬虫机制:学习常见的反爬虫机制,如User-Agent检测、验证码处理等。

数据清洗:了解数据清洗的基本方法,如去除HTML标签、去除重复数据等。

6. 进阶技巧:

并发爬虫:学习如何使用多线程、协程等技术提高爬虫的效率。

动态网页爬取:了解如何处理使用JavaScript动态生成内容的网页。

IP代理和登录验证:了解如何使用IP代理和处理登录验证等问题。

7. 伦理和法律问题:

合法使用:学习爬虫的合法使用原则,遵守网站的使用条款和隐私政策。

遵守法律法规:了解当地的法律法规,确保爬虫行为合法。

以上是一个大致的学习大纲,你可以按照顺序逐步学习每个模块,逐渐掌握Python爬虫的技能。同时,可以结合实际项目和练习来提升自己的能力。记住,不断实践和探索是学习爬虫的关键。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

argo rollout使用

一、前言 argorollout是比argocd更高级的发布工具,其中包含自动化金丝雀发布、自动化蓝绿发布、还可以通过argo命令或者dashboard查看发布的过程 二、使用 需要先部署argo rollout服务 参考:https://github.com/argoproj/argo-rollouts/tree/master/m…

关于web_server项目的学习记录(自用)

主要参考资料: 我在地铁吃闸机 基础处理框架:Multi-reactor muduo库有三个核心组件实现持续监听reactor的fd:channel;epoll/poller/eventloop类 channel 事件监听器epoll_ctl监听到了fd发生了什么事件,channel类会封装每个fd和fd感兴趣的事…

036—pandas 按行将列名根据值由大到小排序

前言 数据处理中,按行排列的列名可以提供更直观的数据探索和分析方式。 你可以逐行查看列名,了解每列的含义和特征,有助于更好地理解数据集的结构和内容。 需求: 需要增加一列「分布方式」,每行的值是本行基金名称对…

C++多线程:thread构造源码剖析与detach大坑(三)

1、thread源码浅剖析 基于Ubuntu18.04版本64位操作系统下进行分析thread源码分析,与Window或者其他版本可能有出入。 1.1、thread线程id的源头 typedef pthread_t __gthread_t; typedef __gthread_t native_handle_type;/// thread::id class id {native_handl…

常用类(日期时间)

目录 一、JDK 8之前的日期时间API1.1、System类中获取时间戳的方法1.2、Java中两个Date类的使用1.3、SimpleDateFormat的使用1.4、Calendar日历类的使用 二、JDK8中日期时间API的介绍2.1、LocalDate、LocalTime、LocalDateTime的使用2.2、Instant类的使用2.3、DateTimeFormatte…

Abaqus模拟新能源汽车电池理论概念

在新能源汽车电池的分析过程中,存在众多典型问题,这些问题跨越了机械、热管理和电气三大关键领域。其中,结构仿真分析作为一种重要的技术手段,主要聚焦于解决机械和热管理方面的挑战,为电池系统的性能优化和安全性提升…

集合(未完。。。)

集合 例题引入1.java集合引入2.为什么要使用集合?3.List、Set、Queue和Map的区别4.ListList——ArrayList(!!实用!!)ArrayList常用方法 List——VectorList——LinkedList 5.Set6.MapHashMapHas…

【CTFshow 电子取证】套的签到题

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收…

Spring 源码调试问题 ( List.of(“bin“, “build“, “out“); )

Spring 源码调试问题 文章目录 Spring 源码调试问题一、问题描述二、解决方案 一、问题描述 错误&#xff1a;springframework\buildSrc\src\main\java\org\springframework\build\CheckstyleConventions.java:68: 错误: 找不到符号 List<String> buildFolders List.of…

【C++】常对象

目录 常对象常对象特点常数据成员常成员函数对象的常引用 常对象 把对象定义为常对象&#xff0c;对象中的数据成员就是常变量&#xff0c;在定义时必须带实参&#xff08;或者有缺省构造函数&#xff09;作为数据成员的初值。 const Person p1(3,4);//定义了一个常对象常对象特…

202452读书笔记|《永安梦》——错过前世 般配 换取今生 奉陪 任波谲云诡 共安危 共进退

今年追的第一本剧同名小说&#xff0c;《永安梦》改编自剧《长安第一美人》。本来是冲着徐正溪去看的&#xff0c;被娜娜、孙坚、夏楠路转粉了&#xff0c;只限这个剧。名字跟我有一个字一样诶。妆造&#xff0c;姿态&#xff0c;男女主&#xff0c;男二女二配角都不错。 因为看…

DRAGIN:利用LLM的即时信息需求进行动态RAG 论文解读

论文地址:https://arxiv.org/pdf/2403.10081.pdf DRAGIN 是一种新型的检索增强生成框架,专门为大型语言模型(LLMs)设计,以满足其在文本生成过程中的实时信息需求。该框架旨在解决传统检索增强生成(RAG)方法在动态性和准确性方面的局限性,特别是在处理复杂、多步骤或长文…

如何将Maven与TestNG集成

我们已经讨论了如何在maven中执行单元测试用例&#xff0c;但那些是JUnit测试用例&#xff0c;而不是TestNG。当maven使用“mvn test”命令进入测试阶段时&#xff0c;这些用例被执行。 本文将介绍如何将Maven与TestNG集成&#xff0c;并在maven进入测试阶段时执行TestNG测试。…

leetcode刷题日记-缺失的第一个正数(困难)

题目描述 解题思路 题目的意思十分容易理解&#xff0c;但是确实思考出来这种解题的方法还是比较难的。首先能想到的点就是[1,N]这个范围&#xff0c;因为只有N个数字&#xff0c;最小的数字只能在这个区间和N1两种可能。但是有时间复杂度的限制&#xff0c;我们该怎么找。我们…

【STM32F103】1-WireDS18B20(含ESP8266代码)

1-Wire 单总线 1-Wire是一种串行通信总线协议&#xff0c;由美国芯片制造商Dallas Semiconductor&#xff08;现为Maxim Integrated&#xff09;开发。这种协议主要用于连接和通信各种设备&#xff0c;并在多个领域得到了广泛应用&#xff0c;如温度传感器、电池管理、智能卡等…

测试用例设计方法-场景法详解

01 定义 场景法是通过运用场景来对系统的功能点或业务流程的描述&#xff0c;从而提高测试效果的一种方法。 场景法一般包含基本流和备用流&#xff0c;从一个流程开始&#xff0c;通过描述经过的路径来确定的过程&#xff0c;经过遍历所有的基本流和备用流来完成整个场景。 …

NO12 蓝桥杯单片机之DS1302的使用

1 DS1302是什么 DS1302由两块存储器组成&#xff0c;一个是日历时钟寄存器还有一个是31位的静态RAM存储器。 而在蓝桥杯中常考的就是日历时钟寄存器&#xff0c;故这里只介绍日历时钟寄存器。简单来说&#xff0c;其就是一个“电子表”&#xff0c;他会自动的实时记录时间&am…

简易挛生分拣系统设计

1 工效组合展示 2 方案规划设计 3 数字挛生建模 基础建模、动画设计、模型导出 4 软件体系架构 5 Web交互设计 5.1 页面架构 5.2 初始构造 5.3 模型运用 5.4 WS通信 5.5 运行展现 6 服务支撑编码 6.1 整体调度 6.2 WS服务 6.3 C/S通信 7 系统级调试完善

了解一下npm i的流程与原理

流程 执行npm install&#xff0c;先判断有无lock文件。 1、没有lock文件。会先根据依赖构建出扁平的依赖关系决定下哪些包。新版本的依赖关系是扁平化的&#xff0c;老版本是树结构&#xff0c;可能会出现依赖重复安装的问题&#xff0c;老版本示意图如下&#xff1a; 作为前…

【探索Linux】—— 强大的命令行工具 P.31(守护进程)

阅读导航 引言一、守护进程简介1. 概念2. 特点 二、用C创建守护进程⭕代码✅主要步骤 温馨提示 引言 当谈到计算机系统中运行的特殊进程时&#xff0c;守护进程&#xff08;daemon&#xff09;无疑是一个备受关注的话题。作为在后台默默运行并提供各种服务的进程&#xff0c;守…