Python爬蟲實戰(zhàn)筆記_1-2

一個小爬蟲,爬一個本地的網(wǎng)頁。


Screen Shot 2016-06-26 at 10.07.06 PM.png

需要提取的信息包括:
頁面中顯示的所有商品的標題,價格,點擊量,評分以及商品的圖片地址。

#!usr/bin/env python
#_*_ coding: utf-8 _*_
#
# filter out specifical info from a local webpage
#
from bs4 import BeautifulSoup

path = '1_2answer_of_homework/index.html'

with open(path, 'r') as webpage:
    content = webpage.read()
    #print content
    soup = BeautifulSoup(content, "lxml")

    images = soup.select('body > div > div > div.col-md-9 > div > div > div > img')
    titles = soup.select('body > div > div > div.col-md-9 > div > div > div > div.caption > h4 > a')
    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')
    #print stars
    for (img, title, price, review, star) in zip(images, titles, prices, reviews, stars):
        img_content = img.get('src')
        title_content = title.get_text()
        price_content = price.get_text()
        review_content = review.get_text()
        star_content = len(star.select('p > span.glyphicon-star'))
    #print stars

        data = {
            "title": title_content,
            "review": review_content,
            "image": img_content,
            "price": price_content,
            "rating": star_content
        }
        print(data)

運行結(jié)果

{'image': 'img/pic_0000_073a9256d9624c92a05dc680fc28865f.jpg', 'price': '$24.99', 'review': '65 reviews', 'rating': 5, 'title': 'EarPod'}
{'image': 'img/pic_0005_828148335519990171_c234285520ff.jpg', 'price': '$64.99', 'review': '12 reviews', 'rating': 4, 'title': 'New Pocket'}
{'image': 'img/pic_0006_949802399717918904_339a16e02268.jpg', 'price': '$74.99', 'review': '31 reviews', 'rating': 4, 'title': 'New sunglasses'}
{'image': 'img/pic_0008_975641865984412951_ade7a767cfc8.jpg', 'price': '$84.99', 'review': '6 reviews', 'rating': 3, 'title': 'Art Cup'}
{'image': 'img/pic_0001_160243060888837960_1c3bcd26f5fe.jpg', 'price': '$94.99', 'review': '18 reviews', 'rating': 4, 'title': 'iphone gamepad'}
{'image': 'img/pic_0002_556261037783915561_bf22b24b9e4e.jpg', 'price': '$214.5', 'review': '18 reviews', 'rating': 4, 'title': 'Best Bed'}
{'image': 'img/pic_0011_1032030741401174813_4e43d182fce7.jpg', 'price': '$500', 'review': '35 reviews', 'rating': 4, 'title': 'iWatch'}
{'image': 'img/pic_0010_1027323963916688311_09cc2d7648d9.jpg', 'price': '$15.5', 'review': '8 reviews', 'rating': 4, 'title': 'Park tickets'}

總結(jié)

  • 爬之前要先了解網(wǎng)頁的結(jié)構(gòu)
  • 熟悉soup.select()如何篩選目標元素
  • 學(xué)習(xí)如何從篩選出的元素中提取目標信息,get_text(), get('class')方法的使用
  • 將目標信息保存為一個dict, 方便整理
  • 計算星星個數(shù)的方法: star_content = len(star.select('p > span.glyphicon-star')),
    先篩選出目標標簽再用len()函數(shù)得到個數(shù)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,650評論 18 399
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 4,011評論 0 11
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,979評論 25 709
  • 今天聽了王媛老師分享的《百變朋友圈打造術(shù)》,怎樣讓自己的朋友圈精彩絕倫,精彩萬分,讓自己的朋友圈色彩鮮明,從此更加...
    辛勒換成果閱讀 205評論 0 0
  • 江水沛兮。舟楫敗兮。我王廢兮。 趣歸于薄。薄亦大兮。樂兮樂兮。 四牡蹺兮。六轡沃兮。去不善而從善。何不樂兮。———...
    清風(fēng)明月照牡丹閱讀 192評論 0 2

友情鏈接更多精彩內(nèi)容