爬虫简单语法

2023-11-10

一、requests(适用于爬取静态网页)

1.get

requests.get(参数)

参数可以是:

接收一个网址,url {

在请求某个查询时,在通用网址后+?query=查询的内容

比如:

在搜狗引擎中,搜索,

content = input("请输入你要搜索的内容")

url = "https://www.sogou.com/web?query={content}"

在百度中:

content = input("请输入你要搜索的内容")

url = "https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=baidu&wd="

}

权限人 headers (有时候不能直接爬取需要加上)

多参数 params (字典形式,当网址太长,?后面带有很多参数时候,可以找到Query String Parameters,进而找到对应的参数,定义成字典形式传参)

总形式:

requests.get(url,headers=,params=)

返回:

查询页面的源码

根据不同编码形式,有utf-8、gbk等,通过charset查看

返回值可以通过.text,.json()等获取文本或者json形式内容

2.post

requests.post(参数)

参数可以是:

大致和get一样

例外:

参数:

查看kw

传参data=

总形式:

requests.post(url,headers=,data=)

注意点:

网址有的隐藏在sug中,不能直接得到

二、对爬取内容筛选关键信息

1.re

通过正则表达式将获取到的内容进行筛选提取

语法规则:

  1. re.compile("")

  1. 括号里的引号是单引号还是双引号根据内容中的引号形式而定,取相反

  1. 引号中内容:

通过.*?懒惰匹配得到关键信息,若想分组提取出来,用(?P<组名>.*?)

2.bs4

通过bs4模块的BeautifulSoup进行筛选提取

语法规则:

  1. BeautifulSoup(获取的网页内容, "html.parser")

  1. html.parser 是网页内容解析器,返回解析后的结果

  1. 需要对前端的语法了解一丢丢,比如标签,属性......利用这些特性取筛选提取内容

  1. 最常用的就是.find()和.find_all(),一个是找到一个就停止,一个是找到所有满足条件的内容,由于参数一致,以find()函数讲解

  1. .find(参数1,attrs={参数2})

参数1是带引号的标签,比如"div", "a", "img"......;

参数2是字典形式的属性值,比如"class": "people", "color": "red"......可以划定范围;

3.xpath

通过lxml模块中的etree的函数xpath函数进行筛选提取

xpath("参数")

参数语法:

  1. 第一个位置的单个/代表根节点,即祖宗,除了首位置的/,单个/都代表最近的子节点,即儿子;

  1. 两个/即//代表子子孙孙中;

  1. ./代表在当前位置基础上继续搜索;

  1. 如果某个父亲的儿子有很多,选某个儿子可以用中括号选取[第几个],从1开始;

  1. /text()表示当代位置包含的文本;

  1. //text()表示当代和子子孙孙代所包含的文本;

  1. /*任意一个儿子,*是通配符;

  1. 在一个标签后面紧跟一个中括号[],[]表示属性筛选,参数形式:@某个属性=值;

  1. 最后一个位置/后面紧跟一个@,@后面跟属性,可以拿到属性的值

三、如果网页是动态页面,有些数据被隐藏了,可以用selenium模块,但是只能爬取原始页面,可以多次使用进入子页面


持续更新!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

爬虫简单语法 的相关文章

随机推荐

  • 微信公众号群发接口和原创校验

    一 说明 1 1限制 二 群发图文消息 三 群发图片 文本 四 群发时使用is to all 五 上传图文消息接口 5 1 上传图文消息内的图片获取URL 订阅号与服务号认证后均可用 5 2 上传图文消息素材 订阅号与服务号认证后均可用 六
  • C语言变长数组讲解

    C语言变长数组讲解 参考资料 1 https www cnblogs com Anker p 3744127 html 2 https www cnblogs com veis p 7073076 html 3 https blog csd
  • EXCEL解析导入,多线程批量插入大量数据

    EXCEL解析导入 批量插入大量数据 excel导入基本分为3个步骤 1 上传文件 2 解析文件 3 逻辑内容 首先查看是哪一步需要优化 一般需要在第3步 插入数据库的逻辑优化 如果数据量比较大的话 单条sql执行很慢 几条数据几次和数据库
  • Alibaba Java Code Guidelines

    Alibaba Java Code Guidelines这个代码规范插件 对于Java代码规范 业界有统一的标准 不少公司对此都有一定的要求 但是即便如此 庞大的Java使用者由于经验很水平的限制 未必有规范编码的意识 而且即便经验丰富的老
  • 提取python字符串括号中的内容

    一些数据按字符串保存 如str1 1 0 123 2 0 234 当我们需要将字符串中的数据提取出来进行计算时 涉及只提出括号中的内容 此时可采取用Python re正则表达式模块和split 函数完成 操作过程略复杂 有更简洁方法时再更新
  • 每日一题(C语言基础篇)3

    题目描述 求一个整数中2进制为1的个数 例如 8 00001000 有一个二进制为1的数 9999 270F 有8个2进制为1的数 代码实现 include
  • 树莓派4B串口配置

    树莓派环境 硬件 树莓派4B 系统 ubuntu22 04 串口信息 树莓派4B一共有6个串口 之前的版本只有2个串口 这6个串口中 有5个时硬件串口 还有个mini串口 这5个硬件串口在我们需要使用外设时 但是 默认情况下 5个默认串口只
  • Qt与VS的对比(1)

    对话框篇 QT与VS创建对话框的方式非常相似 都需要创建一个对话框类 在需要显示该对话框的地方包含对应的头文件 显示即可 区别 QT显示模态对话框使用函数QDialog exec VS显示模态对话框使用函数CDialog DoModal Q
  • JDK的下载与安装详细解释

    JDK的下载与安装 一 JDK下载 进入Oracle官网 https www oracle com index html 打开后我们通过选项卡找到Downloads 操作如下界面 接下来我们找到Deverloper Downloads中的J
  • Unity3D之简单的点击拾取

    新建一个Cube物体和一个脚本Cube 将Cube脚本挂到Cube物体上 代码如下 csharp view plain copy using UnityEngine using System Collections public class
  • Web Components 系列(八)—— 自定义组件的样式设置

    前言 通过前面的学习 对自定义组件的相关概念和知识点也有了一定了解 今天我们就来学习一下给自定义元素及其子元素设置样式的几种方法 直接给自定义标签添加样式 index html
  • 多module启动报错Could not resolve dependencies for project

    前几天用若依的前后端分离版本 项目能启动 打包发布时异常 提示找不到项目依赖 无法解析artifact Could not resolve dependencies for project The following artifacts c
  • [管理与领导-82]:IT基层管理者 - 核心技能 - 高效执行力 - 7- 高效执行的结果通过高效的过程保证

    目录 前言 一 执行前 对 1 1 确保做对事 do right thing 1 目标 行动的目标 2 方向 行动的方向 3 需求 行动是为了满足某种需求 4 指令 行到受谁的指令 1 2 确定做对事的方法 1 2 1 确认 do righ
  • 理解DOM事件流的三个阶段

    本文主要解决两个问题 什么是事件流 DOM事件流的三个阶段 起因 在学习前端的大半年来 对DOM事件了解甚少 一般也只是用用onclick来绑定个点击事件 在寒假深入学习JavaScript时 愈发觉得自己对DOM事件了解不够 遂打开我的
  • 全网最全的IDEA热部署方案,看完弄懂,再也不用加班

    概念 热部署就是正在运行状态的应用 修改了它的源码之后 在不重新启动的情况下能够自动把增量内容编译并部署到服务器上 使得修改立即生效 热部署为了解决的问题有两个 1 在开发的时候 修改代码后不需要重启应用就能看到效果 大大提升开发效率 2
  • python的http服务

    在一个局域网中因为要传输文件给朋友 所以建一个简单的http服务器 自己主机作为服务器 让朋友下载文件 自己主机安装pyhton 到要共享的文件夹下 开启HTTP服务 python m http server 9999 其他主机浏览器访问
  • Java实现算法“两数之和”

    最近开始刷LeetCode 为了加深印象 一定要写下来 题目 给定一个整数数组nums和一个目标值target 请你在该数组中找出和为目标值的那两个整数 并返回它们的数组下标 可以假设每种输入只会对应一个答案 但是不能重复利用这个数组中同样
  • Spring设计模式,事务管理和代理模式的应用

    扩充 贝叶斯定理答案见底 设计模式对关于面向对象问题的具体解决方案 1 单例多例 在设计单例模式时 要注意两个点 1 构造方法要私有 2 成员变量要私有 3 创建对象所用的方法要被synchronized修饰 因为方法体中会涉及到判断当前成
  • Java:利用I/O流读取文件内容

    要利用I O流读取文件内容 首先要掌握InputStream的体系结构 这个体系中FileInputStream和BufferedInputStream是一定要掌握的 因为使用的频率比较高 InputStream的方法 InputStrea
  • 爬虫简单语法

    一 requests 适用于爬取静态网页 1 get requests get 参数 参数可以是 接收一个网址 url 在请求某个查询时 在通用网址后 query 查询的内容 比如 在搜狗引擎中 搜索 content input 请输入你要