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

第三步
这篇要介绍的是如何爬取 "PChome线上购物" 中产品的所有资讯!
这里所写的程式会从 def Firstlayer
、def List
、def Article
中的程式一层一层往下执行
首先我们进入到PChome的官网中,在左上角的地方输入我们要搜寻的产品 (这里我们搜寻NBA球衣)
先将所有需要使用的套件import进来
import requestsfrom bs4 import BeautifulSoupimport json
第二步
我们可以在 https://ecshweb.pchome.com.tw/search/v3.3/all/results?q=NBA球衣 这个网址中看到NBA球衣这个搜寻中的产品总共有5页之多。
于是在程式中,我们会先抓取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的网址
第三步
在此步骤,我们是要获得每个产品所对应到的网址(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)