2020-04-18 python学习--交往爬虫

2020-04-22  本文已影响0人  javen_spring

今天接触的是BeautifulSoup模块。听说很厉害,今天倒要见识一下啦。

认识BeautifulSoup模块

pip install BeautifulSoup4

解析数据

import requests
# 引入BS库,下面的bs4就是beautifulsoup4
from bs4 import BeautifulSoup
res = requests.get('https://localprod.pandateacher.com/python-manuscript/crawler-html/spider-men5.0.html')
# 把网页解析为BeautifulSoup对象
soup = BeautifulSoup(res.text,'html.parser') 

提取数据

知识点:find()与find_all(),以及Tag对象(标签对象)

find()及find_all()方法.png

知识点:两函数用法是一样的,区别在于它们工作量

find()&find_all().png

Tag对象:与find()和find_all()提取的数据类型一致。

Tag对象.png

find提取后进一步提取文本用到Tag对象的另外两种属性——Tag.text(获得标签中的值),和Tag['属性名'](获得属性值)。
重点:Tag.text提出Tag对象中的文字,用Tag['href']提取出URL。

提取数据过程中属性的变化及相应步骤

属性变化及相应步骤.png

代码示例

# 调用requests库
import requests 
# 调用BeautifulSoup库
from bs4 import BeautifulSoup 
# 返回一个response对象,赋值给res
res =requests.get('https://localprod.pandateacher.com/python-manuscript/crawler-html/spider-men5.0.html')
# 把res解析为字符串
html=res.text
# 把网页解析为BeautifulSoup对象
soup = BeautifulSoup( html,'html.parser')
# 通过匹配属性class='books'提取出我们想要的元素
items = soup.find_all(class_='books')  
# 遍历列表items
for item in items:       
    # 在列表中的每个元素里,匹配标签<h2>提取出数据               
    kind = item.find('h2')     
    #  在列表中的每个元素里,匹配属性class_='title'提取出数据          
    title = item.find(class_='title')  
    # 在列表中的每个元素里,匹配属性class_='info'提取出数据   
    brief = item.find(class_='info')      
    # 打印书籍的类型、名字、链接和简介的文字
    print(kind.text,'\n',title.text,'\n',title['href'],'\n',brief.text) 

获取、提取数据过程中用到的Response对象、bs对象及Tag对象的其他属性及方法:

try:
  res.raise_for_status()
except Exception as exc:
  print('There was a problem:%s'%(exc))
select()函数在bs对象中查找元素.png
content = kind.getText(class_='books')  
Tag.attrs
#返回{‘class’:'books'}
items = soup.find_all(class_='books')  [0]
items.get('id')
##返回id的属性值author

服务器响应状态码

服务器响应状态码参考:
慕容小凡博客

上一篇 下一篇

猜你喜欢

热点阅读