Share This Post

套件

  1. requests
  2. beautifulsoup4
pip3 install requests beautifulsoup4

開始

發請求

import requests
from bs4 import BeautifulSoup

url = "<https://www.sinya.com.tw/search/2?sort=price&order=DESC>"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
print(soup)

觀察結果

...

<script>
    var twca_cn = "*.sinya.com.tw";
</script>
<script charset="utf-8" src="//ssllogo.twca.com.tw/twcaseal_v3.js" type="text/javascript"></script>
<script>
    

    //左bar
    $(document).on('click', '.btnSideBar', function(event) {
        event.preventDefault();
        showSidebar();
    });

    $(document).on('click', '.btnSidebarClose', function(event) {
        event.preventDefault();
        showSidebar();
    });

    function showSidebar() {
        $('.sidebar').toggleClass('open');
        $('.mask').toggleClass('open');
        $('.btnSidebarClose').toggleClass('open');
    }

    //打開論壇
    $(document).on('click', '.openForum', function(event) {
        event.preventDefault();
        $('.forumModal').addClass('open');
    });

    //關閉論壇
    $(document).on('click', '.closeForum', function(event) {
        event.preventDefault();
        $('.forumModal').removeClass('open');
    });

    //左側menu
    $('.fa-bars , .linee , .openMeun').on('click', function() {
        $('.menu').toggleClass('over');
        $('.linea1').toggleClass('overL1');
        $('.linea2').toggleClass('overL2');
        $('.linea3').toggleClass('overL3');
        $('.voci-menu').toggleClass('active');
        $('.menu-espanso').toggleClass('menu-espansoOpen');
        $('body').toggleClass('menuOpen');
    });

    //頁腳資訊
    $(document).on('click mouseover', '.footerItems', function(event) {
        var value = $(this).attr('data-id');
        $('.footer_about').find('ul').addClass('hidden');
        $('.footer_about').find('.footerItem' + value).removeClass('hidden');
    });

    //論壇顯示頭像
    $(document).on('click', '.showforumUser', function(event) {
        event.preventDefault();
        $('.forumModal .forumBox .left').addClass('open');
    });

    //論壇隱藏頭像
    $(document).on('click', '.forumModal .forumBox .open', function(event) {
        event.preventDefault();
        $('.forumModal .forumBox .left').removeClass('open');
    });

    $(document).on('click', '.inputProdSearch', function(event) {
        event.preventDefault();
        $('.searchArea .searchGroup .searchBtns').addClass('open');
        $('.searchArea .searchGroup .input-group').addClass('open');
    });

    $(document).on('click', '.phoneBtns .btnClose', function(event) {
        event.preventDefault();
        $('.searchArea .searchGroup .searchBtns').removeClass('open');
        $('.searchArea .searchGroup .input-group').removeClass('open');
    });

    (function(d, s, id) {
        var js, fjs = d.getElementsByTagName(s)[0];
        if (d.getElementById(id)) return;
        js = d.createElement(s);
        js.id = id;
        js.src = "//connect.facebook.net/zh_TW/sdk.js#xfbml=1&version=v2.9&appId=507761536278761";
        fjs.parentNode.insertBefore(js, fjs);
    }(document, 'script', 'facebook-jssdk'));

    $(function() {
        $('.gotop').click(function() {
            $('html,body').animate({
                scrollTop: 0
            }, 333);
        })
        getMarquee();
    })
    /* 跑馬燈 */
    function getMarquee() {
        var $mq = $('.marquee').marquee({
            duration: 15000,
            gap: 50,
            delayBeforeStart: 0,
            direction: 'left',
            duplicated: true
        });
        $('.marquee').hover(function() {
            $mq.marquee('toggle');
        })
        var $fmq = $('.forumMarquee').marquee({
            duration: 15000,
            gap: 50,
            delayBeforeStart: 0,
            direction: 'left',
            duplicated: true
        });
        $('.forumMarquee').hover(function() {
            $fmq.marquee('toggle');
        })
    }
</script>
...

模擬打 API

import requests
import json

url = "<https://www.sinya.com.tw/api/search/getdata/2?sort=price&order=DESC>"
response = requests.get(url)
jsonObj = json.loads(response.text)
print(jsonObj)

觀察結果

{'result_total': '819', 'results': [{'prod_id': '174226', 'image': '/upload/prod/174226.jpg', 'favorable_tags': [], 'prod_groupname': None, 'prod_title': 'ZBOOK FURY 17 G8 菁英行動工作站', 'prod_subtitle': '創作菁英 | 高效能GPU | ISV軟體認證', 'old_price': '$209,000元', 'new_price': '$192,800元', 'discount_price': '省16,200元', 'hide_discount_price': 0, 'href': '<https://www.sinya.com.tw/prod/174226>', 'display_price_status': 1, 'price_comment': '', 'price_comment_link': ''},

處理一下

import requests
import json

url = "<https://www.sinya.com.tw/api/search/getdata/2?sort=price&order=DESC>"
response = requests.get(url)
jsonObj = json.loads(response.text)
for item in jsonObj['results']:
    print(item['prod_title'])
    print("需要錢錢:", item['new_price'])
    print()

觀察結果

ZBOOK FURY 17 G8 菁英行動工作站
需要錢錢: $192,800元

MSI Titan GT77HX 13代制霸旗艦款電競筆電
需要錢錢: $169,900元

ASUS ROG Zephyrus Duo 16 GX650PY
需要錢錢: $149,999元

MSI CreatorPro X17 A12UMS 繪圖工作站
需要錢錢: $147,900元

MSI Titan GT77 龍魂制霸旗艦款電競筆電
需要錢錢: $137,900元

MSI Raider GE78HX 13代旗艦電競筆電
需要錢錢: $129,900元

ZBOOK FURY 17 G8 菁英行動工作站
需要錢錢: $127,900元

HP ZBOOK STUDIO G8 創作行動工作站
需要錢錢: $119,900元

MSI Raider GE76 i9/RTX3080Ti 旗艦款電競
需要錢錢: $113,900元

AORUS 17X AZF i9+3080 13代電競筆電
需要錢錢: $109,900元

ASUS ROG Strix SCAR 18 G834JY
需要錢錢: $109,900元

ZBOOK FURY 15 G8 菁英行動工作站
需要錢錢: $109,900元

acer Predator Helios PH18 13代掠奪者電競
需要錢錢: $108,900元

MSI Creator Z17 A12UHST 纖薄創作者筆電
需要錢錢: $107,900元

HP ZBOOK STUDIO G8 創作行動工作站
需要錢錢: $99,900元

acer Predator Helios PH16 13代掠奪者電競
需要錢錢: $98,900元

Raider GE66 Deluxe Edition 12代旗艦電競筆電
需要錢錢: $94,500元

HP ZBOOK STUDIO G8 創作行動工作站
需要錢錢: $93,900元

MSI Raider GE77HX 旗艦電競筆電
需要錢錢: $92,900元

ASUS ROG Strix SCAR 17 G733PZ
需要錢錢: $89,999元

訂閱研究文章

Get updates and learn from the best