01爬虫基本原理及Requests库下载

一、爬虫基本原理

1.什么是爬虫

​ 爬虫就是爬取数据

2.什么是互联网?

​ 就是由一堆网络设备,把一台台的电脑互联在一起

3.互联网建立的目的

​ 数据的传递和数据共享

4.什么是数据?

​ 例如:

​ 电商平台的商业信息(淘宝、京东、亚马逊)

​ 链家、自如等租房信息

​ 股票政券投资信息

​ 12306票务信息

​ ....

4.1什么是进程和线程

​ 打比方:打开QQ是进程

​ QQ中的很多群是线程

5.什么是上网

​ 普通用户:

​ 打开浏览器

​ →输入网址

​ →往目标主机发送请求

​ →返回响应数据

​ →把数据渲染到浏览器中

​ 爬虫程序:

​ 模拟浏览器

​ →往目标主机发送请求

​ →返回响应数据

​ →提取有价值的信息

​ →保存数据(文件写入本地、持久化到数据库)

6.爬虫的全过程

​ 1.发送请求

​ 请求库:Requests/Selenium

​ 2.获取响应数据

​ 3.解析数据

​ 解析库:BeautifulSoup4

​ 4.保存数据

​ 存储库:文件保存/MongoDB

总结

假如把互联网中的数据比作一座宝藏,爬虫其实就是在挖取宝藏

二、Requests请求库

1.安装

方法一:pip3 install requests

如果报错,则是环境变量没有配好,可以在pycharm中下载

方法二:
1729728-20190701142440838-922134952.png
1729728-20190701142520708-485377395.png
1729728-20190701142530618-1208173656.png
1729728-20190701142539333-1860926947.png

2.分析请求流程(模拟浏览器)

​ -百度

​ 1.请求url:https://www.baidu.com/

​ 2.请求方式

​ 3.响应状态码

三、爬虫三部曲(测试)

1.发送请求

# 发送请求
def get_page(url):response = requests.get(url)return response

2.解析数据

#解析主页页面
import re
def pare_index(html):#findall 匹配所有# re.findall('正则匹配规则','匹配文本','匹配模式')#re.S 对全部文本进行搜索detail_urls = re.findall('<div class="items"><a class="imglink" href="(.*?)"',html,re.S)return detail_urls# 解析详情页
def pare_detail(html):detail_urls = re.findall('<sourse src="(.*?)">',html,re.S)return detail_urls

3.保存数据

#保存文件
import uuid
def save_movie(content):with open(f'{uuid.uuid4()}','wb') as f:f.write(content)print("视频下载完毕")

转载于:https://www.cnblogs.com/Crystal-Zh/p/11113823.html

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

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

相关文章

php 怎么实现收藏功能,php收藏功能如何实现

php收藏功能如何实现php收藏功能的实现方法&#xff1a;首先创建好数据库表 &#xff1b;然后创建前台代码&#xff0c;实现登录界面&#xff1b;接着通过html实现收藏样式&#xff1b;最后使用php进行后台处理即可。推荐&#xff1a;《PHP视频教程》这是数据库表话不多说上代码…

quartus FIR仿真笔记

第一章&#xff1a; 最近百度了一些fir滤波器的资料&#xff0c;都没有自己想要的。容我吐槽一大段文字> 在旧版的quartus中&#xff0c;比如13.0&#xff0c;有两个fir滤波器的选项&#xff0c;如下所示&#xff1a; 网上很多都是讲不带II的那个&#xff0c;而在新版的quar…

关于时钟

/** * 时间获取 * * param mGITime 控件 * param context 承接上下文 */public void endTime(GeneralInput mGITime, Context context) { TimePickerDialog tp new TimePickerDialog(context, (view12, hourOfDay, minute) -> { StringBuilder sb new StringBui…

LVS + Keepalived 双机热备+DR模式

简介 Keepalived 起初是专门针对 LVS 设计的一款强大的辅助工具&#xff0c;主要用来提供故障切换和健康检查&#xff08; Health Checking &#xff09;功能——判断 LVS 负载调度器、节点服务器的可用性&#xff0c;及时隔离并替换为新的服务器&#xff0c;当故障主机恢复后就…

php程序layer,php 提交表单 关闭layer弹窗iframe的实例讲解

介绍一款非常好用的前端弹窗插件&#xff1a;根据官方的API&#xff1a;layer的iframe弹窗//iframe层-父子操作layer.open({type: 2,area: [700px, 530px],fix: false, //不固定maxmin: true,content: test/iframe.html});这里以php开发为例 演示如何 提交表单后自动关闭layer弹…

Django之 RESTful规范

RESTful 规范 一、什么是RESTful REST与技术无关&#xff0c;代表的是一种软件架构风格&#xff0c;REST是Representational State Transfer的简称&#xff0c;中文翻译为“表征状态转移”REST从资源的角度类审视整个网络&#xff0c;它将分布在网络中某个节点的资源通过URL进行…

php编译 ftp,无需重新编译php加入ftp扩展的解决方法

首先&#xff0c;进入源码目录cd php-5.2.13/ext/ftp#运行phpize生成configure/usr/local/php/bin/phpize#编译,指定php-config,注意这里的php-config,不是php.ini./configure --with-php-config/usr/local/php/bin/php-config#上面可以添加--enable-ftp,也可以不用添加#编译安…

git常用命令及分支简介

2019独角兽企业重金招聘Python工程师标准>>> 1、git基本命令 1&#xff09;git add 将想要快照的内容写入缓存区 2&#xff09;git status -s "AM" 状态的意思是&#xff0c;这个文件在我们将它添加到缓存之后又有改动 3&#xff09;git commit -m 第一次…

企业私有云部署im,视频服务

1&#xff0c;安全问题 2&#xff0c;员工跨地域 3&#xff0c;内部视频培训 考勤申请&#xff0c;设备借用申请 名片申请 会议室预订 审批 内网&#xff0c;局域网部署 Android源码 https://github.com/starrtc/android-demo ios源码https://github.com/starrtc/ios-demo

php html 伪静态,php 伪静态(url重写)的写法

来看下面这个网页 url&#xff1a;http://www.jbxue.com/test.php/1,100,8630.html其实处理的脚本是test.php 参数为1,100,8630相当于test.php?a1&b1100&c8630 只不过这样的URL太难记。搜索引擎也不喜欢。真静态只是完全生成了HTML。客户端访问的时候直接输出。不用脚…

客服工作台

public Page<Record> customerDeskList(QhyfController controller) throws Exception {//获取分页信息PageInfo pageInfo controller.getPageInfo();int pageNumber pageInfo.getPageIndex();int pageSize pageInfo.getPageSize();List<String> paras new Arr…

Leetcode怎么调试java代码,在Clion上调试LeetCode代码

在Clion上调试LeetCode代码在leetcode上做题调试起来总有些不方便&#xff0c;所以查阅了一些资料后&#xff0c;按以下配置&#xff0c;自我感觉效率还行&#xff0c;分享给大家。祝大家刷题愉快。并附上自己整理的leetcode400题题表。Leetcode400题&#xff1a;notion地址依赖…

来入门一下kotlin吧

Kotlin是什么&#xff1f; Kotlin是一种在java虚拟机上运行的静态类型的编程语言&#xff0c;被称之为 Android 世界的Swift&#xff0c;由 JetBrains 设计开发并开源。 Kotlin的优势&#xff01; Kotlin可以编译成java字节码&#xff0c;也可以编译成JavaScript。方便在没有ja…

apache2 配置php,Windows配置PHP5与Apache2

windows下安装和配置PHP5与Apache2真是比linux下难多了&#xff0c;唉。这里用的是PHP Version 5.2.1和Apache HTTP Server 2.2.4&#xff0c;都是从官方网站下的。1. 下载安装&#xff0c;不多说了&#xff0c;apache一路按下去就ok&#xff0c;php连按都不用&#xff0c;解压…

ReactNative 触摸事件处理

ReactNative触摸事件处理 对RN触摸事件的捕获与冒泡机制的理解 组件A、B、C结构 组件A组件B组件C 捕获、冒泡机制 sequenceDiagram A->>A: 是否捕获&#xff1f;若是则停止向下一级传递 A->>B: B->>B: 是否捕获&#xff1f;若是则停止向下一级传递 B->&g…

CISCO网络故障排错命令总结分享

一、故障处理命令 1、show命令&#xff1a; 1&#xff09; 全局命令&#xff1a; show version &#xff1b;显示系统硬件和软件版本、DRAM、Flash show startup-config &#xff1b;显示写入NVRAM中的配置内容 show running-config &#xff1b;显示当前运行的配置内容 show b…

java input回车,用java怎样编写加减乘除,从键盘输入,例如:1+2按回车得到

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼import org.junit.Test;import java.util.regex.Matcher;import java.util.regex.Pattern;public class TestCalc {Testpublic void testCalculator() {String input "11";//输入String rule "(\\d\\.?\\d*)([\\…

Java中数组在内存中的存放原理?

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 https://blog.csdn.net/yangyong0717/article/details/79165685Java中数组被实现为对象&#xff0c;它们一般都会因为记录长度而需要额外的内存。对于一个原始数据类型的数组&#xff0c;一般需要24…

程序员如何面试才能拿到offer

一、概述 面试&#xff0c;难还是不难&#xff1f;取决于面试者的底蕴&#xff08;气场技能&#xff09;、心态和认知及沟通技巧。面试其实可以理解为一场聊天和谈判&#xff0c;在这过程中有心理、思想上的碰撞和博弈。其实你只需要搞清楚一个逻辑&#xff1a;“面试官为什么会…

php 跨区域,如何构造PHP的内容包括在非安全(http://)和安全(https://)区域以及跨多个目录使用?...

只需使用//example.com/foo.blah即可.< img id “sample-image”src “// /media/sample-image.png”/>很明显,HTTP是协议,但存在其他协议,如GOPHER,HTTPS,FTP等……而不是在gopher URL gopher&#xff1a;//example.com上,您只需链接到//example.com,协议就可以在没有它…