抓取淘宝司法拍卖数据

之前在某平台看到一些人发布需求,需要爬取淘宝司法拍卖的数据。在这里给大家分享一下,有需要的就直接复制我的代码,粘贴回去就可以直接用了,今天下午才用了的是可以完整的抓取想要的所有数据。
淘宝司法拍卖的数据是动态加载的直接requests.get()请求是拿不到正常的数据的,而且容易反爬,这里用selenium,虽然慢一点但是方便,安全一些。

  1. 打开淘宝官网,进行模拟登录(淘宝司法的信息可以不用登录账号直接爬取,但是访问频繁了,指不定什么时候就跳转到了登录页面,影响爬虫运行的稳定性,所以直接登录比较好)
# 实例化浏览器对象
bro = webdriver.Chrome(options=option)
# 打开淘宝
bro.get('https://www.taobao.com/')
time.sleep(1)
# 点击请登录
bro.find_element_by_xpath('//*[@id="J_SiteNavLogin"]/div[1]/div[1]/a[1]').click()
time.sleep(2)
# 输入账号密码
bro.find_element_by_id('fm-login-id').send_keys("xxxxx")
time.sleep(1)
bro.find_element_by_id('fm-login-password').send_keys("xxxx")
time.sleep(0.5)
# 点击登录按钮
bro.find_element_by_class_name('fm-btn').click()
time.sleep(2)
  1. 点击司法拍卖,切换窗口,在标的分类点击土地分类(这里我爬取的是土地相关的信息),在拍卖状态点击即将开始
# 点击司法拍卖
bro.find_element_by_xpath('/html/body/div[3]/div/ul[2]/li[4]/a').click()
# 切换窗口
bro.switch_to.window(bro.window_handles[-1])
time.sleep(1)
# 点击土地
bro.find_element_by_xpath('//*[@id="sf-focus-2014"]/div/div[1]/div/div[1]/ul/li[4]/a').click()
time.sleep(1)
# 点击即将开始
bro.find_element_by_xpath('/html/body/div[3]/div[2]/ul[4]/li/div[2]/ul/li[2]/em/a').click()
time.sleep(2)
  1. 分析要提取的数据对应的页面源码位置,进行定位提取
    所有的数据都在ul标签下的li标签列表里面:li_list=bro.find_elements_by_xpath('/html/body/div[3]/div[3]/div[3]/ul/li')
    遍历li_list拿到所有的li标签,进一步解析

    xpath解析:标题titleli标签下的a标签下的第一个div标签下的p标签的文本text
    title = li.find_element_by_xpath('./a/div[1]/p').text

    xpath解析:评估价r_priceli下面的a下面的第二个div下面的第四个p,被分隔了好几个标签文本这里直接拿p的文本就行了
    r_price = li.find_element_by_xpath('./a/div[2]/p[4]').text

    开拍时间同上一样用xpath解析

    围观人数和报名人数同上一样用xpath解析


li_list = bro.find_elements_by_xpath('/html/body/div[3]/div[3]/div[3]/ul/li')
for li in li_list:#标题title = li.find_element_by_xpath('./a/div[1]/p').text# 起拍价price = li.find_element_by_xpath('./a/div[2]/p[1]').text# 评估价r_price = li.find_element_by_xpath('./a/div[2]/p[4]').text# 围观人数pai_num = li.find_element_by_xpath('./a/div[3]/p[1]').text# 报名人数apply_num = li.find_element_by_xpath('./a/div[3]/p[2]').text# 开始时间j_time = li.find_element_by_xpath('./a/div[2]/p[5]').text
  1. 定位到下一页的按钮,点击下一页,在页面解析的外面加一层循环,拿到所有页面的信息,并写入本地.csv文件
    这里不可以直接copyxpath, 我第一次跑的时候就报错了,后来发现
    第一页的时候a标签的定位是‘/html/body/div[3]/div[4]/a[6]’
    第二页的时候a标签的定位是‘/html/body/div[3]/div[4]/a[7]’
    到了后面a 标签的定位又变成‘/html/body/div[3]/div[4]/a[8]’

    这里用a标签的class属性值辅助定位‘/html/body/div[3]/div[4]//a[@class="next"]’
j = 1
# 打开本地文件,用追加写的方式写入
fp = open('淘宝司法拍卖.csv', 'a', encoding='utf-8')
# 循环28页
while j <= 28:li_list = bro.find_elements_by_xpath('/html/body/div[3]/div[3]/div[3]/ul/li')for li in li_list:title = li.find_element_by_xpath('./a/div[1]/p').textprice = li.find_element_by_xpath('./a/div[2]/p[1]').textr_price = li.find_element_by_xpath('./a/div[2]/p[4]').textpai_num = li.find_element_by_xpath('./a/div[3]/p[1]').textapply_num = li.find_element_by_xpath('./a/div[3]/p[2]').textj_time = li.find_element_by_xpath('./a/div[2]/p[5]').text# 写入文件fp.write(title+','+price+','+r_price+','+pai_num+','+apply_num+','+j_time+'\n')# 加入判断条件在第28页的时候写入数据,但不再执行点击下一页操作if j != 28:bro.find_element_by_xpath('/html/body/div[3]/div[4]//a[@class="next"]').click()time.sleep(2)j += 1else:j += 1

完整代码

from selenium import webdriver
from selenium.webdriver import ChromeOptions
import timeoption = ChromeOptions()
option.add_experimental_option('excludeSwitches', ['enable-automation'])
bro = webdriver.Chrome(options=option)bro.get('https://www.taobao.com/')
time.sleep(1)
bro.find_element_by_xpath('//*[@id="J_SiteNavLogin"]/div[1]/div[1]/a[1]').click()
time.sleep(2)
bro.find_element_by_id('fm-login-id').send_keys("XXXXXXX")
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(2)
bro.find_element_by_xpath('/html/body/div[3]/div/ul[2]/li[4]/a').click()
bro.switch_to.window(bro.window_handles[-1])
time.sleep(1)
bro.find_element_by_xpath('//*[@id="sf-focus-2014"]/div/div[1]/div/div[1]/ul/li[4]/a').click()
time.sleep(1)
bro.find_element_by_xpath('/html/body/div[3]/div[2]/ul[4]/li/div[2]/ul/li[2]/em/a').click()
time.sleep(2)fp = open('./淘宝司法拍卖.csv', 'a', encoding='utf-8')j = 1
i = 1
while j <= 28:li_list = bro.find_elements_by_xpath('/html/body/div[3]/div[3]/div[3]/ul/li')for li in li_list:title = li.find_element_by_xpath('./a/div[1]/p').textprice = li.find_element_by_xpath('./a/div[2]/p[1]').textr_price = li.find_element_by_xpath('./a/div[2]/p[4]').textpai_num = li.find_element_by_xpath('./a/div[3]/p[1]').textapply_num = li.find_element_by_xpath('./a/div[3]/p[2]').textj_time = li.find_element_by_xpath('./a/div[2]/p[5]').textfp.write(title+','+price+','+r_price+','+pai_num+','+apply_num+','+j_time+'\n')print('第{}条记录完成'.format(i))i += 1print('第{}页完成'.format(j))if j != 28:bro.find_element_by_xpath('/html/body/div[3]/div[4]//a[@class="next"]').click()time.sleep(2)j += 1else:j += 1# 记得关闭文件和浏览器
fp.close()
bro.quit()

要其他的数据就在点击分类的时候点位到其他的分类,替换掉就行了。
每一步定位点击按钮的操作都最好 time.sleep() 一下,点击太快页面还没加载出来程序就会报错,而且容易被封。

这是我下午爬的速度也不会很慢十分钟左右吧好像是,忘记了,反正刷了几个抖音就好了。检查了一遍,数据没有遗漏,重复,缺失的情况。


2121/3/22 更新

from selenium import webdriver
from selenium.webdriver import ChromeOptions
import timeoption = ChromeOptions()
'''
规避检测参数
最好更改谷歌浏览器驱动这个值 $cdc_asdjflasutopfhvcZLmcfl(注意要等长)
不被检测出来的话,一般是不用滑块验证的
阿里的滑块通过率不高,比较麻烦
'''
option.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 1})
option.add_experimental_option('excludeSwitches', ['enable-automation'])
bro = webdriver.Chrome(options=option)
option.add_argument("--disable-blink-features=AutomationControlled")
bro.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": """Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"""
})
# 在进入网站之前,窗口最大化
bro.maximize_window()
bro.get('https://www.taobao.com/')
time.sleep(1)
bro.find_element_by_xpath('//*[@id="J_SiteNavLogin"]/div[1]/div[1]/a[1]').click()
time.sleep(2)
bro.find_element_by_id('fm-login-id').send_keys("账号")
time.sleep(1)
bro.find_element_by_id('fm-login-password').send_keys("密码")
time.sleep(0.5)
bro.find_element_by_class_name('fm-btn').click()
time.sleep(2)
bro.find_element_by_xpath('/html/body/div[3]/div/ul[2]/li[2]/a').click()
bro.switch_to.window(bro.window_handles[-1])
time.sleep(1)
bro.find_element_by_xpath('//*[@id="sf-focus-2014"]/div/div[1]/div/div[1]/ul/li[4]/a').click()
time.sleep(1)
bro.find_element_by_xpath('/html/body/div[3]/div[2]/ul[4]/li/div[2]/ul/li[2]/em/a').click()
time.sleep(2)fp = open('./淘宝司法拍卖.csv', 'a', encoding='utf-8')j = 1
i = 1
while j <= 28:li_list = bro.find_elements_by_xpath('/html/body/div[3]/div[3]/div[3]/ul/li')for li in li_list:title = li.find_element_by_xpath('./a/div[1]/p').textprice = li.find_element_by_xpath('./a/div[2]/p[1]').textr_price = li.find_element_by_xpath('./a/div[2]/p[4]').textpai_num = li.find_element_by_xpath('./a/div[3]/p[1]').textapply_num = li.find_element_by_xpath('./a/div[3]/p[2]').textj_time = li.find_element_by_xpath('./a/div[2]/p[5]').textfp.write(title+','+price+','+r_price+','+pai_num+','+apply_num+','+j_time+'\n')print('第{}条记录完成'.format(i))i += 1print('第{}页完成'.format(j))if j != 28:bro.find_element_by_xpath('/html/body/div[3]/div[4]//a[@class="next"]').click()time.sleep(2)j += 1else:j += 1# 记得关闭文件和浏览器
fp.close()
bro.quit()

采集结果
测试的话就搞了3页 没发现异常

抓取淘宝司法拍卖数据相关推荐

  1. 利用selenium自动抓取淘宝后台运营数据填入表格

    在下帮别人写的简单python程序.我很懒,有时间再写博客,先放github链接吧 使用说明: 一.电脑环境配置 电脑:windows系统: 浏览器:谷歌,建议版本 95.0.4638.69(如果其他 ...

  2. 抓取淘宝购物车数据以及足迹数据

    demo地址:https://download.csdn.net/download/wanmeizty/11286264 抓取淘宝购物车数据以及足迹数据 1,首先接入百川SDK,授权登录,加载购物车, ...

  3. 采集淘宝API数据,抓取淘宝商品资料无需申请appkey

    为了进行淘宝的API开发,首先我们需要做下面几件事情. 1)开发者注册一个账号 2)然后为每个淘宝应用注册一个应用程序键(App Key) . 3)下载淘宝API的SDK并掌握基本的API基础知识和调 ...

  4. scrapy抓取淘宝女郎

    scrapy抓取淘宝女郎 准备工作 首先在淘宝女郎的首页这里查看,当然想要爬取更多的话,当然这里要查看翻页的url,不过这操蛋的地方就是这里的翻页是使用javascript加载的,这个就有点尴尬了,找 ...

  5. python + selenium多进程爬取淘宝搜索页数据

    python + selenium多进程爬取淘宝搜索页数据 1. 功能描述 按照给定的关键词,在淘宝搜索对应的产品,然后爬取搜索结果中产品的信息,包括:标题,价格,销量,产地等信息,存入mongodb ...

  6. scrapy抓取淘宝女郎 1

    scrapy抓取淘宝女郎 准备工作 首先在淘宝女郎的首页这里查看,当然想要爬取更多的话,当然这里要查看翻页的url,不过这操蛋的地方就是这里的翻页是使用javascript加载的,这个就有点尴尬了,找 ...

  7. python(27) 抓取淘宝买家秀

    selenium 是Web应用测试工具,可以利用selenium和python,以及chromedriver等工具实现一些动态加密网站的抓取.本文利用这些工具抓取淘宝内衣评价买家秀图片. 准备工作 下 ...

  8. python好用的库存尾货女装_Python抓取淘宝女装信息(一)

    本次实战案例以抓取淘宝上连衣裙信息为切入点,共抓取4356件连衣裙产品信息.在此基础上进行初步分析.这里首先感谢@大宇,后期的数据处理与图表制作全靠大神帮助.下面我们进入正式介绍环节. 淘宝.京东.链 ...

  9. python3 爬虫实战案例 (抓取淘宝信息)(淘宝加了搜索必须登录的验证,此方法所到的结果都是0)

    需求:对比足球,篮球,乒乓球,羽毛球,网球,相关物品的销售量保存到excle中 和抓取淘宝关键字相关信息的销售量,这和之前抓取csdn网站浏览量取不同,抓取csdn浏览量主要是通过bs4Tag标签,而 ...

最新文章

  1. # cat /proc/umap/vi
  2. 与孩子一起学编程python_与的解释|与的意思|汉典“与”字的基本解释
  3. Extension延展(十八)
  4. Js 模拟鼠标点击事件
  5. python中的序列类型数据结构元素的切片操作_浅析python中的分片与截断序列
  6. Linux sed命令高级用法精讲
  7. Python+Selenium学习笔记5 - python官网的tutorial - 交互模式下的操作
  8. java 放行文件_springmvc中关于静态资源的放行
  9. Hive map阶段缓慢,优化过程详细分析
  10. oracle中sqldrunl结尾符号,oracle笔记(韩顺平oracle视频教学整理)
  11. MFC中MSChart控件安装使用
  12. 金万维异速联服务器重装,金万维异速联服务器配置说明.doc
  13. 公众号搜题题库接口使用方法
  14. 计算机网络 电子邮件
  15. Netease Music Spider
  16. 创蓝253短信平台代码实现
  17. 后付费和账单分期真的可以缓解经济压力么
  18. Java显示the type xxx is already defined的解决方法
  19. OGC入门学习专栏(2) - 传感网实现-SWE(持续更新)
  20. BigBrother的大数据之旅Day 10 hive(1)

热门文章

  1. 5.基于Abp的DDD框架
  2. 【卷积神经网络】卷积层,池化层,全连接层
  3. 树莓派程序开机自启(尝试过很多终于成了)
  4. 多个excel合并到一个excel的不同sheet中
  5. 前端开发[html+css]的实用网站分享(一)
  6. 居家办公以外一些有意思的事
  7. opencv阈值图像Threshold方法
  8. c++练习题,动物爱吃什么
  9. 传播模型——简单的元胞自动机(3)
  10. vue本地的模糊匹配