Python爬虫--解析网页中的元素

2016-05-27  本文已影响0人  LineWay

本次学习目的:
学会筛选所需要的信息。

解析网页的步骤:

1.使用Beautiful解析网页
Soup = BeautifulSoup(html,'lxml')

  1. 描述要爬取的东西在哪里
    message = Soup.select()
    3.从标签中获得你要的信息

1.使用BeautifulSoup解析网页

Soup = BeautifulSoup(html, 'lxml)
这一句代码的意思是,解析一个html文件,使用lxml这个库,在Python中,解析一个网页有多种的库,比如:html.parselxml HTMLlxml XMLhtml5lib等,选择lxml的原因是这个库相对比较快速且稳定性较好。

2.描述要爬取的元素的位置

网页中对应元素的检查Copy的格式有两种,selectorXPath
区别如下:
CSS selector:body > div:nth-child(2) > div > div.col-md-9 > div:nth-child(2) > div:nth-child(1) > div > img

XPath:/html/body/div[1]/div/div[2]/div[2]/div[1]/div/img

上面两行代码是一个网页中的同一个元素的selectorXPath,可以看出,XPath单纯的指出了元素所在的位置,selector则同时标出了元素的样式。

3.筛选所需要的信息

筛选所需要的信息,在逻辑处理上进行操作即可完成,增加筛选条件即可。

示例代码:

from bs4 import BeautifulSoup

info = []

with open('index.html','r') as wb_data:
    Soup = BeautifulSoup(wb_data,'lxml')

    titles = Soup.select('body > div > div > div.col-md-9 > div > div > div > div.caption > h4 > a')
    images = Soup.select('body > div > div > div.col-md-9 > div > div > div > img')
    prices = Soup.select('body > div > div > div.col-md-9 > div > div > div > div.caption > h4.pull-right')
    reviews = Soup.select('body > div > div > div.col-md-9 > div > div > div > div.ratings > p.pull-right')
    # 爬取商品的星级评分
    stars = Soup.select('body > div > div > div.col-md-9 > div > div > div > div.ratings > p:nth-of-type(2)')

for title, image, price, review, star in zip(titles, images, prices, reviews, stars):
    data = {
        'title': title.get_text(),
        'iamge': image.get('src'),
        'price': price.get_text(),
        'review': review.get_text(),
        # 对评分进行提取
        # 每个星级都有一个class_="glyphicon glyphicon-star"
        
        'star': len(star.find_all("span", class_="glyphicon glyphicon-star"))
    }

    info.append(data)


for i in info:
    if i['star'] > 3:
        print i['title'],i['price']

上述代码实现了从一个页面index.html页面爬取到所需要的信息,并对结果进行筛选并打印出来。其中的难点部分是对商品的星级评分进行爬取。

上述代码中,提取标签中的文本信息使用get_text()方法,提取图片信息使用的是get('src'),在星级评分中使用的是find_all()

具体的用法可以参考BeautifulSoup的中文手册

上一篇下一篇

猜你喜欢

热点阅读