大数据—爬虫基础

大数据—爬虫基础使用 and or not 等逻辑运算符选择节点 例如 book price 数据爬虫

大家好,欢迎来到IT知识分享网。

目录


爬虫是什么?

  • 爬虫(Crawler),也被称为网络爬虫、网页蜘蛛或网络机器人,是一种按照既定规则在网络上自动爬取信息的程序或脚本。它模拟人类操作客户端(如浏览器或APP)向服务器发起网络请求,以抓取数据。爬虫可以用于网站数据采集内容监测等多种用途。

爬虫的工作流程:

  1. 选取目标数据源:确定要爬取的网站或网页。
  2. 发起网络请求:模拟浏览器向目标网站发送请求。
  3. 获取响应数据:接收目标网站返回的响应数据,通常是HTML、XML或JSON格式的数据。
  4. 解析数据:使用解析器(如BeautifulSoup、lxml等)解析响应数据,提取出所需的信息。
  5. 存储数据:将提取的信息存储到数据库、文件或其他存储介质中。

发送网络请求

使用requests库:

导入库:

  • import requests 

请求类型: 

get请求:

  • ret = requests.get(url = url)

post请求:

  • ret = requests.post(url = url)

 UA伪装:

有的网站有反爬机制,这时候就要模拟成正常客户端的请求去访问。

添加请求头:UA伪装:

  • ret = requests.get(url = url,headers = {“User-Agent”: “xxx”})    “xxx”处省略

修改编码格式: 

爬取数据时,如果返回的是乱码,则要修改编码格式

  •  ret.encoding=’utf-8′

查看是否请求成功

  • print(ret)

返回200为成功,非200则请求失败。


解析数据

常用解析库:

  • re 正则表达式 
  • Beautiful Soup
  • xpath

正则表达式 

导入库:

  • import re

正则表达式元字符

  • .           匹配任意字符 ( \n除外 )
  • [ ] ”        匹配[ ]中列举的字符
  • \d ”        匹配数字,即0-9
  • \D ”       匹配⾮数字
  • \s ”        匹配空⽩,即空格,tab键
  • \S ”       匹配⾮空⽩字符    
  • \w ”       匹配单词字符,即a-z、A-Z、0-9
  • \W ”      匹配⾮单词字符
  • \ ”         转义字符,用于匹配特殊字符,如 \. 匹配点字符
  • ( )        提取括号内匹配的数据
  • ^ ”        匹配字符串开始
  • ” ”        匹配字符串结束
  • *         匹配前面的子表达式零次或多次
  • + ”        匹配前面的子表达式一次或多次
  • ? ”        匹配前面的子表达式零次或一次
  • {n}”       匹配前面的子表达式n次
  • {n, }”     匹配前面的子表达式n次或更多次
  • {n,m}”   匹配前面的子表达式n到m次
  • | ”         或,匹配左右两边任意一个表达式

常用函数

函数 说明
re.match( ) 从字符串的起始位置匹配, 匹配成功, 返回一个匹配的对象, 否则返回None
re.match( ) 扫描整个字符串并返回第一个成功的匹配
re.findall( ) 在字符串中找到正则表达式所匹配的所有子串, 并返回一个列表, 如果没有找到匹配的, 则返回空列表
re.split( ) 将一个字符串按照正则表达式匹配结果进行分割, 返回列表类型
re.finditer( ) 在字符串中找到正则表达式所匹配的所有子串, 并把它们作为一个迭代器返回
re.sub( )  把字符串中所有匹配正则表达式的地方替换成新的字符串
re.complie( )  将正则表达式传入, 返回一个匹配对象, 一般与其他方法组合使用

Beautiful Soup

导入库:

  • from bs4 import BeautifulSoup

转成BeautifulSoup对象

  • soup = BeautfiulSoup(ret.text)

find_all()函数

  • find_all() 方法用于查找文档中所有匹配的标签。它会返回一个包含所有匹配项的列表。

参数 :

find_all(name, attrs, recursive, string, kwargs)

  • name:要查找的标签名。
  • attrs:一个字典,用于指定要查找的标签的属性。
  • recursive:是否递归搜索子标签。默认为 True。
  • string:要查找的文本内容。
  • kwargs:其他关键字参数,如 class_(注意有一个下划线)用于查找具有特定类的标签。

find()函数

  • find() 方法与 find_all() 类似,但它只返回第一个匹配的标签(而不是一个列表)。如果没有找到匹配的标签,则返回 None。

用法:

  • 与 find_all() 相同,但返回单个结果或 None。

查找第一个<p>标签

soup.find('p')

查找所有<p>标签  

soup.find_all('p')      

查找ID为’my-id’的元素  

soup.find(id='my-id') 

注意:类名作为参数时要使用’class_‘,因为class是Python的关键字

soup.find_all(class_='my-class')


select() 

方法使用CSS选择器来定位元素。

查找所有<p>标签 

soup.select('p') 

查找ID为’my-id’的元素  

soup.select('#my-id')          

 查找所有类名为’my-class’的元素  

soup.select('.my-class')       

 查找所有类名为’my-class’的<p>标签  

soup.select('p.my-class')           

查找所有<div>标签下的直接子元素<p>  

soup.select('div > p')  

查找所有具有href属性的<a>标签  

soup.select('a[href]')  

查找href属性以’http://example.com’开头的<a>标签

soup.select('a[href^="http://example.com"]') 

xpath库:

导入xpath库:

import xpath

常用参数:

” ”   从根节点的所有节点
” //  从匹配选择的当前节点选择文档中的节点,不考虑他们的位置(取子孙节点)
” ”   选取当前节点
” .. ”   选取当前节点的父节点
” ”  选取属性
* 匹配任意节点
” /text ()  获取Element对象的元素内容( 文本 )
” /@  获取标签中的属性名的内容
” [ ]  筛选符合条件的节点

# 导入xpath库
import  xpath

# 解析XML字符串
html = ertee.HYML(ret .text)

# xxx为解析式
xp = html .xpath("xxx")

print(xp)

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/116760.html

(0)
上一篇 2025-11-26 14:26
下一篇 2025-11-26 14:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信