爬虫之xpath的使用

本文以爬取百度首页的本文,网址和图片信息为例,介绍一个用xpath实现的最基本的爬虫代码

提取属性

  0.框架搭建

    导入python库

      简单爬虫一定到导入的一个库就是requests库,本文使用requests库中的get方法。由于本文使用xpath方法,所以还要使用lxml包中的etree方法

      import requests

      from lxml import etree

      在此之后我们还要定义一个URL

      url ="https://www.baidu.com"

    获取网页信息

      html_baidu = requests.get(url)

    初始化一个etree模板

      html = etree.HTML(html_baidu.text)

  1.获取文本信息

      获取Li标签下的文本

      (1)all_li = selector.xpath('//div/ul/li/a/text()')#从根目录下获取某li标签的下的文本

      (2)one_class = selector.xpath('//div/ul/li[@class="item-3"]/a/text()')#获取指定class标签下的文本

      (3)one_class = selector.xpath('*/li[@class="item-3"]/a/text()')#另一种方法获取文本

      (4)a_ul = selector.xpath('//ul/text()')#获取UL下的文本

      (5)all_text = selector.xpath('string(//ul)')#提取全部文本    

  2.获取网址信息

      获取li标签下的网址

      (1)one_herf = selector.xpath('//div/ul/li/a/@href')

      (2)one_herf = selector.xpath('//div/ul/li/a[1]/@href')#获取第一个a标签下的网址

    例子:

      获取百度首页中的几个文本信息和HTML网址信息和百度的图片

    1.几个文本信息

      text = html.xpath('//*[@id="u1"]/a/text()')

    2.几个网址信息

      url = html.xpath('//*[@id="u1"]/a/@href')

    3.获取百度图片

      img1 = html.xpath('//*[@id="lg"]/img/@src')[0]
      img2 = 'http:'+img1
      print(img2)
      t = requests.get(img2)
      with open('baidu.png','wb') as f:
          f.write(t.content)

posted @ 2018-01-31 23:15  莫言于方  阅读(218)  评论(0)    收藏  举报