python抓取淘宝数据

python抓取淘宝数据

  1. selenium 模拟登录
  2. 输入关键字并搜索
  3. xpath解析

这个是属于比较简单的 直接上代码

完整代码如下

from selenium import webdriver
from selenium.webdriver import ChromeOptions
import time
from lxml import etree

#实例化浏览器对象
option = ChromeOptions()
option.add_experimental_option('excludeSwitches', ['enable-automation']) #规避检测
bro = webdriver.Chrome(options=option)

# 访问淘宝首页
bro.get('https://www.taobao.com/')
#定位搜索框并输入python
btn = bro.find_element_by_id('q')
btn.click()
btn.send_keys('python')

#定位到搜索按钮并点击
bro.find_element_by_class_name('search-button').click()
time.sleep(1)
# 页面跳转到登录页面
# 定位到账号密码框并分别传入账号密码
bro.find_element_by_id('fm-login-id').send_keys("XXXXX")
time.sleep(1)
bro.find_element_by_id('fm-login-password').send_keys("XXXXX")
time.sleep(0.5)
# 定位到登录按钮并点击登录
bro.find_element_by_class_name('fm-btn').click()
time.sleep(3)
page = bro.page_source #拿到页面源码数据
# 用xpath解析
tree = etree.HTML(page)
# 拿到所用商品列表数据的节点列表
div_list = tree.xpath('//*[@id="mainsrp-itemlist"]/div//div[@class="items"]/div')
#遍历所有节点,进一步解析出想要的数据
for div in div_list:
    title = div.xpath('.//div[@class="row row-2 title"]/a//text()')
    title = ''.join(title).replace('\n', '').replace(' ','') #清洗掉多余的空格,换行符
    price = div.xpath('.//div[@class="price g_price g_price-highlight"]//text()')
    price = ''.join(price).replace('\n', '').replace(' ', '')
    count = div.xpath('.//div[@class="deal-cnt"]/text()')[0]
    shop = div.xpath('.//div[@class="row row-3 g-clearfix"]//text()')
    shop = ''.join(shop).replace('\n', '').replace(' ', '')
    print(title, price, count, shop)
time.sleep(3)
bro.close() #关闭浏览器

还是要注意操作的时候睡上几秒,太快容易定位不到标签节点

想要采集多页只需加上一个while循环就ok了
n = 0
while n < 50: #想要多少页n就等于多少
    page = bro.page_source

    tree = etree.HTML(page)
    div_list = tree.xpath('//*[@id="mainsrp-itemlist"]/div//div[@class="items"]/div')
    for div in div_list:
        title = div.xpath('.//div[@class="row row-2 title"]/a//text()')
        title = ''.join(title).replace('\n', '').replace(' ', '')
        price = div.xpath('.//div[@class="price g_price g_price-highlight"]//text()')
        price = ''.join(price).replace('\n', '').replace(' ', '')
        count = div.xpath('.//div[@class="deal-cnt"]/text()')[0]
        shop = div.xpath('.//div[@class="row row-3 g-clearfix"]//text()')
        shop = ''.join(shop).replace('\n', '').replace(' ', '')
        print(title, price, count, shop) #我这里只是打印了一下 你可以在这里进行持久行存储
    # 定位到‘下一页’的按钮并点击
    bro.find_element_by_xpath('//*[@id="mainsrp-pager"]/div/div/div/ul/li[8]/a').click()
    n += 1
    time.sleep(3)

循环中每次结束让程序睡几秒钟,太快容易被封号!!! 切记

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无恶不作杰尼龟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值