大道至简!不会逆向照样用Python采集京东数据

一、前言

有粉丝反映我怎么都不采集大厂的数据,比如像京东、淘宝、1688、小红书等。其实主要是这些大厂数据还真难采集,基本都要逆向,有的时候好不容易逆向出来,没过多久人家又改算法了,性价比不高。。。今天就用playwright通过web自动化的方式采集京东的数据,就算不会逆向也不怕。唯一的缺点就是速度太慢,但个人觉得如果只是需要几万条数据,这种方法还是挺好的,性价比高!

二、爬取目标  

  1. 此API目前支持以下基本接口:

    • item_get 获得JD商品详情
    • item_search 按关键字搜索商品
    • item_search_img 按图搜索京东商品(拍立淘)
    • item_search_shop 获得店铺的所有商品
    • item_history_price 获取商品历史价格信息
    • item_recommend 获取推荐商品列表
    • buyer_order_list 获取购买到的商品订单列表
    • buyer_order_datail 获取购买到的商品订单详情
    • upload_img 上传图片到JD
    • item_review 获得JD商品评论
    • cat_get 获得jd商品分类

三、完整源码 from lxml import etree
import csv
from playwright.sync_api import sync_playwright

def getListData():
    with sync_playwright() as p:
        browser_type = p.chromium
        browser = browser_type.launch(headless=False)
        page = browser.new_page(ignore_https_errors=True)
        print('请手动登录京东账号!')
        page.goto("https://passport.jd.com/uc/login")
        page.wait_for_load_state("load")
        isLogin = input("是否已经登录?(Y/n): ")
        if isLogin=='Y':
            with open('京东商品列表(雨刷).csv', 'a', encoding='utf-8', newline='') as file:
                writer = csv.writer(file)
                for i in range(200): 
                    try:
                        url = "https://list.jd.com/list.html?cat=6728,6742,6766&isList=1&page={}".format(i+1)
                        page.goto(url)
                        page.wait_for_load_state("load")
                        page.wait_for_timeout(300000)
                        html = etree.HTML(page.content())
                        lis = html.xpath("//ul[@class='gl-warp clearfix']/li")
                        for li in lis:
                            data_sku = li.xpath("./@data-sku")[0]
                            title = li.xpath(".//div[@class='p-name p-name-type-3']/a/em/text()")[0]
                            price = li.xpath(".//div[@class='p-price']//i/text()")[0]
                            commit = li.xpath(".//div[@class='p-commit']//a/text()")[0]
                            shop = li.xpath(".//span[@class='J_im_icon']/a/text()")[0]
                            print('商品ID:',data_sku)
                            print('标题:',title)
                            print('价格:',price)
                            print('评论数:',commit)
                            print('商店:',shop)
                            print('========================================================\n')
                            writer.writerow([data_sku, title, price, commit, shop])
                    except Exception as e: 
                        print('采集网址:', url)
                        print('异常:', e)
                        print('========================================================\n')
                        
        browser.close()

def main():
    getListData()
    
if __name__== "__main__" :
    main()
 四、爬取结果

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值