python之爬虫

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)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值