IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python 网络爬虫与信息提取(request库) -> 正文阅读

[Python知识库]python 网络爬虫与信息提取(request库)

网络爬虫与信息提取

  1. VSCODE 开发工具

Requests 库自动爬去HTML页面 信息

安装requests库

在这里插入图片描述

使用requests 库

  1. 引入requests 库
  2. 用r.status_code 来分析响应状态码是否为200
  3. 用r.text 来分析响应内容
  4. 用r.encoding 来分析响应编码方式
  5. 用r.apparen_encoding 对响应内容编码方式分析
  6. 用r.content 响应内容的二进制形式
  • 注意: 一般是使用r.encoding=r.apparen_encoding来解决爬取网页乱码的问题
    下面展示一些 python
import requests

def getHtml(url):
	try:
		r=requests.get(url)
		r.raise_for_status()#用来测试响应返回状态码是否为200
		r.encoding=r.apparent_encoding #用来解决页面乱码
		return r.text
	except:
		return '发生异常'

if __name__=='__main__'
u="http://www.baidu.com"
print(getHtml(u))

###HTTP协议对资源的操作方法(请求方式)

  1. get查: 请求URL位置资源
  2. head查: 请求获取URL位置资源响应消息报告
  3. post增: 请求URL位置的资源后附加新的数据(一般用于提交表单)
  4. put增: 请求URL位置存储一个资源,覆盖URL位置资源
  5. patch改: 请求局部更新URL位置的资源,即改变该处资源的部分内容
  6. delete删: 请求删除URL 位置存储的资源
    ####patch和put 的区别
  7. put是全部重新定向(具有覆盖性)
  8. patch 则是将单一数据修改
    ###requests库13个控制访问参数(**kwargs)
    1. params:字典或者字节序列,增加到URL🔗中

      import requests
      d={'key1':'value1','key2':'value2'}
      r=requests.get('http://python123.io/ws',params=d)
      print(r.url)
      
      https://python123.io/ws?key1=value1&key2=value2
      
      
    2. data: 字典或者字节序列,增加的请求体中🌍

      import requests
      d={'key1':'value1','key2':'value2'}
      r=requests.request('POST','http://python123.io.ws',data=d)#方法一
      r=requests.post('http://python123.io/ws',data=d)#方法二
      print(r.url)
      
    3. json: json格式的数据

      import requests
      d={'key1':'value1','key2':'value2'}
      r=requests.post('http://python123.io/ws',json=d)
      r=requests.request('POST','http://python123.io/ws',json=d)
      print(r.url)
      
    4. headers:字典,HTTP协议头

      import requests
      head={'user-agent':'Chrome/10'}
      r=requests.post('http://python123.io/ws',headers=head)
      
      print(r.url)
      
    5. cookies:字典或者CookieJar,Request中的cookie
      1. 查看cookie
      2. requests 库的cookie是用字典的形式展示的,而网页中的cookie是用;进行分割的
      3.

      
      
    6. auth:元组,支持HTTP认证功能

      
      
    7. files:字典类型,传输文件(可以向某一个链接提交某一个文件)

       import requests
      fs={'file':open('path','rb')}
      r=requests.post('http://python123.io/ws',file=fs)
      
    8. timeout:设定超时时间

      
      
    9. proxies:字典类型,设定访问代理服务器,可以增加登陆认证

      
      
    10. allow_redirects:重定向开关 (boolean)

      
      
    11. stream:获取内容立即下载开关(boolean)

      
      
    12. verify:认证SSL证书开关(boolean)

      
      
    13. cert:本地SSL证书路径

      
      

robots.txt 网络爬虫排除标准

Beautiful Soup 解析HTML页面

安装BeautifulSoup 库

pip install beautifulsoup4

查看库安装情况

pip list

简单实例

import requests #导入Requests 库
from bs4 import BeautifulSoup #导入beautiful soup 库
url='http://python123.io/ws/demo.html'
r=requests.get(url)
r.encoding=r.apparent_encoding
#获取的网页内容
page=r.text
#解析页面内容
soup=BeautifulSoup(page,'html.parser')
#美化页面
print(soup.prettify())
属性说明
.contents子节点列表
.children子节点的迭代类型
.descendants子孙节点的迭代
.parent节点的父标签
.parents节点的祖先标签
.name遍历标签下有哪些标签

Re 正则表达式库

	用来简洁表达一组字符串的方式
操作符说明实例
.表示任何单个字符
[]字符集,对单个字符给出取值范围[abc]表示a,b,c`[a-z]表示a到z单个字符
[^]非字符集,排除单个字符[^abc]表示非a,b,c的单个字符
*前一个字符0次或无限次扩展abc*表示ab,abc,abcc,abccc,
+前一个字符1次或无限次扩展abc+表示abc,abcc,abccc
表示左右任意一个abc|def表示abc、def
?前一个字符出现0次或1次扩展abc?表示ab,abc
{m}前一个字符出现的次数ab{2}c表示abbc
{m,n}前一个字符出现m到n次ab{2,3}c表示abbc或abbbc
^匹配字符串开头^abc表示abc在一个字符串的开头
$匹配字符串结尾abc$表示abc 结尾的字符串
()分组标记,内部只能使用“|”操作符号(abc)表示abc,(abc|def)表示abc、def
\d数字,等价于[0-9]
\D匹配除数字以外字符
\w除标点符号以外字符,等价于[A-Za-z0-9]

re模块的七重境界

  1. 第一重(固定字符串查找)
import re
text='升高:188,体重:167,年龄29,学号:0927,电话:110'
# 假设查找一个固定字符串188
#text表示要查找的字符串
a=re.findall(r'188',text)
print(a)
  1. 第二重(找到数字类型字符)
import re
text='升高:188,体重:167,年龄29,学号:0927,电话:110'
# 假设查找所有单个数字字符 使用\d
a=re.findall(r'\d',text)
print(a)
  1. 第三重(查找多个数字类型或者出标点符号类字符)
import re
text='升高:188,体重:167,年龄29,学号:0927,电话:110'
# 假设查找所有单个数字字符 使用\d
# {3.5}代表查找该类型字符串的长度区间为3-5
a=re.findall(r'\d{3,5}',text)
#代表查找文本内连贯的字符串
b=re.findall(r'\d+',text)
print(a)

4.第四重(查找连贯字符串)

import re
text='升高:188,体重:167,年龄29,学号:0927,电话号码:110'
a=re.findall(r'\D+',text) #表示除了数字以外连贯字符串
b=re.findall(r'\d+',text) #表示查找连贯数字字符串
c=re.findall(r'\w+',text)#表示查找标点符号意外的连贯字符串
print(a)
print(b)
print(c)
  1. 第五重( 查找两种不同排列结构的连贯字符串)
from cgi import print_arguments
import re
text='手机号:18500009999,邮箱:1498999631@qq.com'
#"|"表示两种不同排列结构的连贯字符串
# - 1\d{10}表示手机号
# - \w+@qq.com表示qq邮箱
a=re.findall(r'1\d{10}|\w+@qq.com',text)
print(a)
  1. 第六重(限定位置, 如:文章开头或者结尾)
import re
text='手机号:18500009999,邮箱:1498999631@qq.com'
# "^"表示文章开头开始匹配正则表达式
# "$"表示文章末尾开始匹配正则表达式
a=re.findall(r'^1\d{10}|\w+@qq.com$',text)
print(a)
  1. 第七重(内部约束)
import re
text='手机号:18500009999,邮箱:1498999631@qq.com'
#匹配邮箱后字符
a=re.findall(r'(?<=邮箱.)\w+@qq.com',text)
print(a)
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-05-15 11:33:57  更:2022-05-15 11:35:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 13:52:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码