Python自动登陆淘宝并爬取商品数据||淘宝数据采集接口

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

基本开发环境

  • Python 3.6

  • Pycharm

import timefrom selenium import webdriverfrom selenium.webdriver.chrome.options import Optionsimport csv

相关模块pip安装即可

selenium

Selenium 是一个 Web 的自动化测试工具,最初是为网站自动化测试而开发的,就像玩游戏用的按键精灵,可以按指定的命令自动操作。

Selenium 测试工具直接操控浏览器中,就像真正的用户在操作一样。Selenium 可以根据的指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏,或者判断网站上某些动作是否发生等。

模块安装

pip install selenium

谷歌驱动下载地址:

https://npm.taobao.org/mirrors/chromedriver/
http://chromedriver.storage.googleapis.com/index.html

配置浏览器驱动:

将下载好的浏览器驱动解压,将解压出的 exe 文件放到Python的安装目录下,也就是和python.exe同目录即可。

或者把驱动和代码放在同一个路径里面。

确定目标网页

图片

爬取内容:

  • 商品名字

  • 商品店铺

  • 价格

  • 成交量

  • 发货地址

1、获取搜索框元素,输入想要搜索的内容 这里咱们搜索女士包包的关键词

driver.find_element_by_css_selector('#q').send_keys('口红')

2、获取搜索按钮元素,点击搜索

driver.find_element_by_css_selector('.search-button').click()

3、会弹出登陆页面

方式一:

点击二维码,手动扫码登陆淘宝;

方式二:

获取账号和密码元素,用代码输入~;

注意点:如果账号密码输入过快,会出现滑块验证,输入的频率控制好,可以避免出现验证码,实现自动输入账号密码登陆。

4、获取页面每个商品元素

每一个商品信息都包含在div标签里面,先获取所有div标签元素,然后再遍历获取每一个商品的详细信息。

    lis = driver.find_elements_by_css_selector('#mainsrp-itemlist .item')    for li in lis:        time.sleep(1)        price = li.find_element_by_css_selector('.ctx-box .price strong').text + '元'  # 商品价格        deal = li.find_element_by_css_selector('.ctx-box .deal-cnt').text  # 成交量        row = li.find_element_by_css_selector('.ctx-box .row-2 a').text  # 商品名字        shop = li.find_element_by_css_selector('.shop > a > span:nth-child(2)').text  # 店铺名字        city = li.find_element_by_css_selector('.row-3 > div.location').text  # 发货地址

注意点:可以稍加延时,避免页面没有加载完成导致网页元素获取不到的报错问题

获取商品数据之后,可以通过csv文件把相关内容保存至本地

5、保存数据

f = open('淘宝数据.csv', mode='a', encoding='utf-8-sig', newline='')csv_writer = csv.DictWriter(f, fieldnames=['商品价格', '成交量', '商品名字', '店铺名字', '发货地址'])csv_writer.writeheader()"""写入第四步"""        dit = {            '商品价格': price,            '成交量': deal,            '商品名字': row,            '店铺名字': shop,            '发货地址': city,        }        csv_writer.writerow(dit)

这样一页的商品数据就可以保存下来了,我们想要获取的数据肯定是不仅一页

6、翻页

获取下一页元素,进行点击

def next_page():    time.sleep(1)    driver.find_element_by_css_selector(        '#mainsrp-pager > div > div > div > ul > li.item.next > a > span:nth-child(1)').click()    driver.implicitly_wait(10)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值