网络爬虫(五)

对网页进行数据解析的原理主要有两点:

1.进行标签定位。
2.提取标签间数据,或提取标签属性中的数据。

bs4数据解释过程:
  • 实例化一个BeautifulSoup对象,并将页面源码文本加载到该对象。
  • 通过过调用BeutifulSoup对象的方法与属性方法进行定位和数据提取。
安装bs4相关的模块
pip install bs4
pip install lxml

调用bs4主要代码有: soup=BeautifulSoup(page_text,'lxml')
page_text就是网页的源码文本

如下代码例子:
import requests
from bs4 import BeautifulSoup

if __name__=='__main__':
    url='https://travel.163.com/19/0511/01/EES1RQ9O00068AIR.html'
    # 设置user-agent用字典的形式
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 QIHU 360SE'}
    res=requests.get(url=url,headers=headers)
    page_text=res.text
    soup=BeautifulSoup(page_text,'lxml')
    print(soup.a)
BeutifulSoup对象主要有以下方法与属性
  • 生成BeutifulSoup对象:soup=BeautifulSoup(page_text,'lxml')
  • find: soup.find('div') #取第一次出现div标签。,其他形式:soup.find('div',class_='classname')
  • findall: soup.findall('div') #取全部div标签。,其他形式:soup.findall('div',class_='classname')
  • select:
    soup.select('.classname')  #前面有“.”表示选中所有类名为classname的标签,生成列表。
    select(' .classname>ul>li>a') # “>”表示直系层级,这个语句表示选中在类名为classname下ul下li下的全为a全部子标签。
    select(' .classname>ul a') #空格表示多个层级,这个语句表示选中类名为classname的标签下ul下子子孙孙标签为a的所有标签。
  • 属性:
    soup.a.text #取得标签下所有文本与soup.a.get_text()相似。这是取a标签间及子子孙孙标签间文本。
    soup.a.string #取得标签直系文本

    soup.a['href'] #取标签属性,这里取标签a的href属性。
    网络爬虫(五)_第1张图片
    夏天需看的图

你可能感兴趣的:(网络爬虫(五))