DrissionPage采集京东商品信息

本文介绍了如何使用DrissionPage库自动化操作,包括模拟搜索、登录验证、动态页面滑动抓取,以及从商品列表中提取标题、价格等信息,详细展示了如何完成京东商品数据的单页和翻页抓取。
摘要由CSDN通过智能技术生成

前言:

        东子的商品数据获取,方法还是有很多的,常规的爬虫采集的话,需要去解密他的列表页参数,其次的话就是自动化selenium采集,这个也是普遍的方式,但现在全网大部分平台对selenium都有一定的风控检测,及其容易被发现,所以我们趁着drissionpage的这波热度,再来简单跑个数据采集的脚本吧!

流程分析:

        ①这一块其实也是简单的自动化操作,所以定位下搜索框,找到对应的元素即可!然后用python模拟一下做一个基本的访问!

from DrissionPage import ChromiumPage
cp = ChromiumPage()
cp.get('https://www.jd.com/')
cp.ele('xpath://*[@id="key"]').input('电脑')
cp.ele('xpath://*[@id="search"]/div/div[2]/button').click()
cp.wait.load_start()

        ②进去之后会有一个基本的信息登录验证,同样的找到对应账户和密码的输入框进行点击操作。这里有个小点需要注意,dp库可以保留cookie信息即账户信息,在你进行账户密码登录模拟的过程中,dp记录了这个操作,所以后续你进行程序访问,可以注释账户密码的元素代码,一样能够实现登录!

cp.ele('css:#loginname').input(account)
time.sleep(1)
cp.ele('css:#nloginpwd').input(password)
time.sleep(1)
cp.ele('css:#loginsubmit').click()
cp.wait.load_start()

        ③进入商品列表页面之后,会发现这是个动态加载的页面,我们需要保证每条数据的抓取,就要写入程序滑动的操作才可行。这里我简单构建了一个滑动条的脚本,大部分的动态网页刷新都可以滑动,感兴趣的朋友可以去尝试。

    def scroll_page(page, scroll_times=10):
        for _ in range(scroll_times):
            page.actions.scroll(0, 5000)
            time.sleep(1)
    scroll_page(cp)

        ④商品抓取,先找到包含所有商品标签的父元素 #J_goodsList > ul 再针对其下方的单个元素,包含(标题,价格,详情页,评论量,店铺信息)进行提取操作,获取每一个元素的文本信息!

title = li.ele('css:.p-name em').text.replace('\n', '')
price = li.ele('css:.p-price i').text + '¥'
commit = li.ele('css:.p-commit a').text
shop = li.ele('css:.p-shop a').text
href = li.ele('css:.p-img a').link

基本上到了这一步就完成了单页数据的抓取了,想进行翻页抓取更多内容的话,可以直接找到翻页的元素标签 pn-next 针对这块的操作即可完美复现京东商品数据全部采集!

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在 iframe 中嵌套第三方页面时,如果需要在该页面中设置或获取 cookie,需要注意以下几点: 1. 父页面和子页面必须同源,即协议、域名和端口号必须完全一致。 2. 如果子页面是通过 HTTPS 协议进行访问的,那么父页面也必须通过 HTTPS 协议进行访问,否则会受到浏览器的安全限制而无法进行 cookie 的设置和获取。 3. 在设置 cookie 时,需要将 cookie 的 domain 属性设置为当前域名或其父域名,以便在子域名下也能够访问到该 cookie。 4. 在设置 cookie 时,需要将 cookie 的 path 属性设置为当前路径或其父路径,以便在子路径下也能够访问到该 cookie。 例如,在父页面中通过 JavaScript 动态创建一个 iframe 并嵌入一个第三方页面: ```html <html> <head> <title>父页面</title> </head> <body> <iframe id="myIframe" src="http://third-party.com"></iframe> <script> var iframe = document.getElementById('myIframe'); iframe.onload = function() { // 在子页面中设置 cookie iframe.contentDocument.cookie = 'name=value; domain=domain.com; path=/'; }; </script> </body> </html> ``` 在子页面中可以通过 JavaScript 获取和设置 cookie: ```html <html> <head> <title>子页面</title> </head> <body> <script> // 获取 cookie var cookie = document.cookie; console.log(cookie); // 设置 cookie document.cookie = 'name=value; domain=domain.com; path=/'; </script> </body> </html> ``` 需要注意的是,在通过 JavaScript 设置 cookie 时,需要在 domain 和 path 属性中指定正确的值,以便在整个域名或路径下都能够访问到该 cookie。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值