PChome线上购物 这篇要介绍的是如何爬取 "PChome线上购物" 中产品的所有资讯! 这里所写的程式会从 def Firstlayer、def List、def Articl... PChome线上购物

这篇要介绍的是如何爬取 "PChome线上购物" 中产品的所有资讯!

这里所写的程式会从 def Firstlayerdef Listdef Article 中的程式一层一层往下执行

第一步

首先我们进入到PChome的官网中,在左上角的地方输入我们要搜寻的产品 (这里我们搜寻NBA球衣)
https://ithelp.ithome.com.tw/upload/images/20200627/20118435KXSjpPeGa9.jpg
https://ithelp.ithome.com.tw/upload/images/20200627/201184352zoy43wzBL.jpg


先将所有需要使用的套件import进来

import requestsfrom bs4 import BeautifulSoupimport json

第二步

我们可以在 https://ecshweb.pchome.com.tw/search/v3.3/all/results?q=NBA球衣 这个网址中看到NBA球衣这个搜寻中的产品总共有5页之多。
https://ithelp.ithome.com.tw/upload/images/20200627/20118435y547cwUpCk.jpg

于是在程式中,我们会先抓取Page的值,再自动生成 "NBA球衣" 所有页面的 url。

data={}是用来装我们所有爬取的资料
def Firstlayer(data, keyword):    DOMAIN = 'https://ecshweb.pchome.com.tw'    data = {}    ty_url = DOMAIN + '/search/v3.3/all/results?q={}'.format(keyword)    res = requests.get(ty_url).text    doc = json.loads(res)      Page = doc['totalPage']    for num in range(1, Page+1):        pg_url = ty_url + '&page={}&sort=sale/dc'.format(str(num))        List(pg_url, data, num)
pg_url - 自动产生所有page的网址
https://ithelp.ithome.com.tw/upload/images/20200627/20118435Rmnp5lN0gw.jpg
第三步

在此步骤,我们是要获得每个产品所对应到的网址(url)。

    我们会从 pg_url 的网址中抓取每个产品的 "名称" 还有 "id"再将 "名称" 与 "id" 组合起来变成 article_urlarticle_url 是每个产品所对应到的网址(一条 pg_url 网址会装载 20 个产品资讯)
def List(pg_url, data, num):    print(pg_url)    resp = requests.get(pg_url).text    doc = json.loads(resp)        for product in doc['prods']:        data['Description'] = product['name']        pro_id = product['Id']        data['PrdCode'] = pro_id        article_url = 'https://24h.pchome.com.tw/prod/' + product['Id']        data['url'] = article_url                Article(pro_id, data)