python之爬虫

本文介绍如何使用Python的BeautifulSoup模块进行网页爬虫,包括解析源代码、搜索数据及获取标签、文本和属性的方法。详细展示了find_all、find、select等函数的使用技巧,适合初学者快速上手。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python之爬虫-------beautifulsoup模块

引用from bs4 import BeautifulSoup

使用流程

1.获取源代码 2.使用bs4解析源代码 3.从解析的解析的结果里面搜索数据

针对对象

1.tag标签对象 2.string文本对象
获取标签:

1.通过 . 的方式

print(soup.head.title)
但是它是有缺点的,如果同一层级下出现了同名的标签。那么只会取第一个。
2.通过bs4中的函数
find_all(Tagname,attrs={};text,limit),返回列表形式的结果集,Tagname标签名 通过标签名查找

print(soup.find_all('title'))
print(soup.find_all('meta'))
print(soup.find_all("span"))
print(soup.find_all("img"))
print(soup.find_all(['h1','h2'])) # 同时找h1和h2
print(soup.find_all(re.compile('h[1-6]'))) # 查找满足正则条件的标签

通过attrs={“class”:“value”}通过属性查找

print(soup.find_all('div',attrs={"class":"txList-sj"}))  #找到class为 txList-sj 的div
print(len(soup.find_all('div',attrs={"class":"txList-sj"})))

print(soup.find_all("img",attrs={"class":"lazy"}))  # 找到class为lazy 的img标签
print(soup.find_all("img",attrs={"class":"lazy","width":208}))  # 找到class为lazy并且宽度为208 的img标签
print(soup.find_all('div',attrs={"data-id":True}))  # 找到包含 data-id 属性的标签
print(soup.find_all('div',attrs={"data-id":re.compile("302\d+")})) # 找到data-id 是以302开头的标签

text='value’通过标签的文本内容查找节点

print(soup.find_all("a",text='江奕  海边女孩')) # 查找文本内容为 '江奕  海边女孩' 的a标签
print(soup.find_all('a',text=re.compile('女'))) # 查找文本中包含 '女' 的a标签

limit 限定查找次数

print(soup.find_all('a',text=re.compile('女'),limit=3)) # 查找文本中包含 '女' 的a标签 ,只要三条

而find()用法与find_all相同,只会返回一个人结果

对于select()通过css选择器获取

print(soup.select("a.imgTitle")) # 找到class为imgTitle的a标签

获取文本和属性
获取属性:Tag.attrs 获取该标签的所有属性

img_list=soup.find_all('img',attrs={"class":'lazy'})
for once_img in img_list:
    # print(once_img.attrs)
    print("https:"+once_img.attrs['src'])

获取文本:
Tag.text()获取标签下的所有文本(递归向下找)

urls=soup.find_all('div',attrs={"class":"txList-sj"})
print(urls)
for once in urls:
    # print(once.attrs['href'])
    print(once.text)

Tag。string获取本标签内的文本,如果里层还有变迁,返回None值

urls=soup.find_all('a',attrs={"class":"imgTitle"})
# urls=soup.find_all('div',attrs={"class":"txList-sj"})
# print(urls)
for once in urls:
    # print(once.attrs['href'])
    # print(once.text)
    print(once.string)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值