美文网首页python编程
抓取页面元素--python篇

抓取页面元素--python篇

作者: Cassie测试路 | 来源:发表于2018-06-12 15:19 被阅读0次

目标:抓取该页面的Followers数量

  • 因为做自动化测试时经常需要抓取页面元素用作判断,所以这里作下简单的说明
获取Followers数量

所需包:

  • requests,bs4

BeautifulSoup介绍

1. 获取操作tag

  • 获取操作tag的接种方式:
  1. soup.find_all(name=None, attrs={}, recursive=True, text=None, limit=None, **kwargs),返回符合条件的所有标签,查找不到则返回[],可以传递标签名,标签属性,关键字参数,函数,True等
  2. soup.find(name=None, attrs={}, recursive=True, text=None, **kwargs),返回第一个符合条件的标签,查找不到则返回None
  3. soup.select(selector, _candidate_generator=None, limit=None),根据css选择器返回所有符合条件的标签
  4. soup.select_one(selector),返回符合css选择器的第一个标签

2. 操作tag

  • tag.name ,获取标签名,例如:'div'
  • tag['attr_name'] , 获取标签的某个属性的值,string类型
  • tag['class'] ,获取标签的class属性值,list类型,例如:['orange', 'login']
  • tag.attrs ,获取标签的所有属性,dict类型
  • tag.get_text() ,返回标签的内容,或者 tag.text

3. 实践

from bs4 import BeautifulSoup
import requests

res = requests.get('https://gitee.com/maxiaoqian')
# 如果不指定parser,会有警告,使用默认的html.parser,不同的系统解析可能会有差异
soup = BeautifulSoup(res.text, 'html.parser')

# 获取操作tag, <class 'bs4.element.Tag'>
# 返回:
'''
  <div class="follow-num" id="followers-number">
  42
  </div>
'''
tag = soup.find('div', attrs={'id': 'followers-number'})              # 查找树
# tag = soup.find_all('div', attrs={'id': 'followers-number'})[0]
# tag = soup.select_one('div#followers-number')                   # css selector方式
# tag = soup.select('div#followers-number')[0]

# 返回tag的内容: tag.text 或者 tag.get_text()
print(tag.get_text().strip())    # 移除内容字符串中前后的空格,返回: '42'

相关文章

网友评论

    本文标题:抓取页面元素--python篇

    本文链接:https://www.haomeiwen.com/subject/cnzleftx.html