爬虫学习

补充

--------获取get请求
response = urllib.request.urlopen("http://www. baidu.com" )
print(response.read().decode( 'utf-8'))
对获取到的网页源码进行utf-8解码
-------

bs4

BeautifulSoup4将复HTML文档转换成一个复杂的树形结构,
每个节点都是Python对象,所有对象·乂归纳为4;
from bs4 import BeautifulSoup

# Tag   标签及其内容;拿到它所找到的第一个内容
# NavigableString 标签的内容字符串类型
# BeautifulSoup 表示整个文档
# comment 是一个特殊的NavigableString 输出的内容不包含注释符号
file=open("./baidu.html","rb")#二进制读取文件
html = file.read().decode("uft-8")
bs = BeautifulSoup(html,"html.parser")
print(bs.title) #获取title的所有内容
print(bs.title.string) # 获取标签内容
print(bs.title.attrs)#标签的属性
print(bs) #输出的是BeautifulSoup

遍历文档树

在这里插入图片描述在这里插入图片描述

搜索

在这里插入图片描述

#文档搜索
findall
# list=bs.find_all("a")
# print(list)
# 1.2.正则表达式搜索 部分匹配
# list=bs.find_all(re.compile("a"))
# print(list)
# 1.3.根据函数的要求来搜索
# def name_is_exsist(tag):
#     if __name__ == '__main__':
#         return tag.has_attr("name")
# list=bs.find_all(name_is_exsist)
# print(list)
# 2. kwargs参数
#list=bs.find_all(href="http://news.baidu.com")
# 3.text文本参数
# list=bs.find_all(text="新闻")
# print(list)

在这里插入图片描述在这里插入图片描述在这里插入图片描述

css选择器

在这里插入图片描述在这里插入图片描述在这里插入图片描述

正则表达式

\s  空格

在这里插入图片描述在这里插入图片描述

re主要函数

在这里插入图片描述在这里插入图片描述

compile(pattern):创建模式对象


import re
pat=re.compile("A")
#m=pat.search("CBA")
m=pat.search("ABC")
#等价于 re.search( A , CBA )
print(m)
#<re.Match object; span=(2, 3), match='A'> 表示匹配到了
m=pat.search("CBD")
print(m) #None 表示没匹配到

search(pattern,string):在字符串中寻找模式

import re
m = re.search("asd" , "ASDasd" )
print(m)
# <_sre.SRE_Match object at 0xb72cd6e8> #匹配到了,返回MatchObje(True)
m = re.search("asd" , "ASDASD" )
print(m) #没有匹配到,返回None(False)

match(pattern,string):在字符串开始处匹配模式

# 等价于
pat=re.compile( "a" )
print(pat.match( "Aasd" ))
#输出None
print(pat.match("aASD" ))
#输出 <_sre.SRE_Match object at 0xb72cd6e8>

split(pattern,string):根据模式分割字符串,返回列表

re.split( , , a,s,d,asd )
[ a , s , d , asd ] #返回列表
pat = re.compile( , )
pat.split( a,s,d,asd )
[ a , s , d , asd ] #返回列表
re.split( [, ]+ , a , s ,d ,,,,,asd ) #正则匹配:[, ]+,后面说明
[ a , s , d , asd ]
re.split( [, ]+ , a , s ,d ,,,,,asd ,maxsplit=2) # maxsplit 最多分割次数
[ a , s , d ,,,,,asd ]
pat = re.compile( [, ]+ ) #正则匹配:[, ]+,后面说明
pat.split( a , s ,d ,,,,,asd ,maxsplit=2) # maxsplit 最多分割次数
[ a , s , d ,,,,,asd ]

findall(pattern,string):列表形式返回匹配项

pat = re.compile( "[A-Z]+" ) #正则匹配:[A-Z]+ 后面有说明
print(pat.findall( "ASDcDFGAa" ))
#[ ASD , DFGA ] #找到匹配到的字符串
pat = re.compile( [A-Z] )
pat.findall( ASDcDFGAa ) #正则匹配:[A-Z]+ 后面有说明
[ A , S , D , D , F , G , A ] #找到匹配到的字符串

sub(pat,repl,string) :用repl替换 pat匹配项

(留的是中间的,因为中间在中心)

re.sub( a , A , abcasd ) #找到a用A替换,后面见和group的配合使用
AbcAsd
pat = re.compile( a )
pat.sub( A , abcasd )
AbcAsd
pat=re.compile(r www.(.*)..{3} ) #正则表达式

在这里插入图片描述

函数的用法

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值