正则表达式与网页爬虫【re与urllib】简单使用

正则表达式与网页爬虫【re与urllib】简单使用

一、Python正则表达式

这个比较基础 大概 不是太细 这篇博文【https://blog.csdn.net/qq_43636709/article/details/107140529】后面有几个比较好的实例 可以拿来练手

1、正则表达式的概念

通过一组特殊的字符串按照指定的序列定义的一种规则,称为正则表达式。

2、正则表达式的主要作用

主要用于用户输入的数据进行验证,验证用户输入的数据是否符合定义的规则。

3、正则表达式基本语法

例如对手机号码进行正则表达式的编写

reg=^1[35789]\d{9}$

^:表示开始

1:表示第一个字符为数字1

\d:表示数字

{n}:n表示数字的个数,表示任意n个数字

+:表示1到n次,字符串出现的次数

*:表示0到n次,字符串出现的次数

?:表示0到1次

w:表示任意字母

4、python中使用re模块定义正则

import re

5、re中常用的方法

(1) match方法

从第一个字符开始匹配,如果第一个起始字符不匹配,则返回None

import re s=“www.sohu.com” print(re.match(“www”,s).span()) #返回匹配的字符串的位置 print(re.match(“com”,s))#与起始字符串不匹配,返回None 运行效果如下: (0, 3) None

(2) 使用group方法进行正则匹配

分组根据正则表达式匹配指定的字符,并返回字符信息

 lin="Cats are smarter than dog"     
 matchObj=re.match(r'(.*)are(.*?)',lin,re.M|re.I)  #定义正则表达式并与lin中 的字符串进行比对re.M表示多行匹配,re.I表示忽略大小写     
 print(matchObj.group())#匹配are之前的所有字符  
 print(matchObj.group(1))#匹配are之前的第1个位置的字符  
 print(matchObj.group(2))#匹配are之前的第2个位置的字符 

(3) seach方法

扫描整个字符串并进行比对,返回第1个成功的匹配位置

 import re     
 s="www.sohu.com"  
 print(re.search("www",s))  
 print(re.search("com",s))     
 结果如下:  <re.Match object; span=(0, 3),  match='www'>  <re.Match object; span=(9, 12),  match='com'>  

二、python中的爬虫

1、主要用于爬取网页中的数据

2、当前网络传输协议

(1) http协议:超文本传输协议,传输的数据格式为html(超文本标记语言)

(2) Https协议:具有安全验证的超文本传输协议,加入了ssl安全证书

(3) ssl:安全套接字协议证书

3、http请求的方式

(1)GET请求方式:请求的参数信息会显示在地址栏中,传输的参数个数不能超过255个字符。

(2)POST请求方式:请求的信息是隐藏的,不会显示在地址栏中,向服务器传递的数据可以达到20M。

4、URL

统一资源定位,实际为请求的网络资源地址。

例如:

http://www.sohu.com/index.html

5、请求的状态码

(1)200:表示请求的资源已响应成功。

(2)404:表示资源不存在

(3)500:请求资源成功,但是服务器内部错误

(4)403:请求的服务器忙,无法响应。

6、网页请求的调试工具

(1) Fiddler:用于调试请求响应的页面信息

(2) 浏览器自带的调试工具,按F12显示调试的网页信息

7、使用urllib爬取网页信息

(1) python3以上版本使用urllib2,引入的组件库为:

import urllib.request

(2) 获取html对象的方法

html=urllib.request.urlopen(“url地址”)

例如,获取百度首页信息

html=urllib.request.urlopen(“http://www.baidu.com”)

(3) 读取网页信息

x=html.read()

完整的请求响应代码如下所示:

import urllib.request     #获取请求对象  
request=urllib.request.Request("https://www.sohu.com")        
#User-Agent: Mozilla/5.0 (Windows NT  10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183  Safari/537.36  request.add_header("User-Agent","Mozilla/5.0")  #用于反爬虫处理,伪装为火狐浏览器访问  
response=urllib.request.urlopen(request)  
print("请求响应的状态码:",response.getcode()) 
print("获取请求的网站地址:",response.geturl())  
print(response.read())

(4) 使用urllibencode转换字典为搜索的url字符串格式

Urllib.parse.urlencode(字典对象)

示例如下:从键盘输入要搜索的信息进行baidu查询

import urllib.request  
import os     
base_url="https://www.baidu.com/s?"     
seacherString=input("请输入要查找的信息:")     
dic={'wd':seacherString}     
sc=urllib.parse.urlencode(dic)  #转换字典为搜索字符串信息     
full_url=base_url+sc  #拼接要搜索的url地址信息  
print("要所搜的信息为:",full_url)     
request=urllib.request.Request(full_url)  #获取请求对象        
#User-Agent: Mozilla/5.0 (Windows NT  10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183  Safari/537.36  request.add_header("User-Agent","Mozilla/5.0")  #用于反爬虫处理,伪装为火狐浏览器访问  
response=urllib.request.urlopen(request)     
print(response.read())         
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值