网络爬虫(五)

作者: zhangxiaohao | 来源:发表于2019-05-11 09:15 被阅读0次
    对网页进行数据解析的原理主要有两点:

    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属性。 夏天需看的图

    相关文章

      网友评论

        本文标题:网络爬虫(五)

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