抓取淘宝司法拍卖数据
抓取淘宝司法拍卖数据
之前在某平台看到一些人发布需求,需要爬取淘宝司法拍卖的数据。在这里给大家分享一下,有需要的就直接复制我的代码,粘贴回去就可以直接用了,今天下午才用了的是可以完整的抓取想要的所有数据。
淘宝司法拍卖的数据是动态加载的直接requests.get()
请求是拿不到正常的数据的,而且容易反爬,这里用selenium,虽然慢一点但是方便,安全一些。
- 打开淘宝官网,进行模拟登录(淘宝司法的信息可以不用登录账号直接爬取,但是访问频繁了,指不定什么时候就跳转到了登录页面,影响爬虫运行的稳定性,所以直接登录比较好)
# 实例化浏览器对象
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)
- 点击司法拍卖,切换窗口,在
标的分类
点击土地
分类(这里我爬取的是土地相关的信息),在拍卖状态
点击即将开始
# 点击司法拍卖
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)
分析要提取的数据对应的页面源码位置,进行定位提取
所有的数据都在ul
标签下的li
标签列表里面:li_list=bro.find_elements_by_xpath('/html/body/div[3]/div[3]/div[3]/ul/li')
遍历li_list拿到所有的li标签,进一步解析xpath解析:标题
title
在li
标签下的a
标签下的第一个div
标签下的p
标签的文本text
title = li.find_element_by_xpath('./a/div[1]/p').text
xpath解析:评估价
r_price
在li
下面的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
- 定位到下一页的按钮,点击下一页,在页面解析的外面加一层循环,拿到所有页面的信息,并写入本地.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页 没发现异常
抓取淘宝司法拍卖数据相关推荐
- 利用selenium自动抓取淘宝后台运营数据填入表格
在下帮别人写的简单python程序.我很懒,有时间再写博客,先放github链接吧 使用说明: 一.电脑环境配置 电脑:windows系统: 浏览器:谷歌,建议版本 95.0.4638.69(如果其他 ...
- 抓取淘宝购物车数据以及足迹数据
demo地址:https://download.csdn.net/download/wanmeizty/11286264 抓取淘宝购物车数据以及足迹数据 1,首先接入百川SDK,授权登录,加载购物车, ...
- 采集淘宝API数据,抓取淘宝商品资料无需申请appkey
为了进行淘宝的API开发,首先我们需要做下面几件事情. 1)开发者注册一个账号 2)然后为每个淘宝应用注册一个应用程序键(App Key) . 3)下载淘宝API的SDK并掌握基本的API基础知识和调 ...
- scrapy抓取淘宝女郎
scrapy抓取淘宝女郎 准备工作 首先在淘宝女郎的首页这里查看,当然想要爬取更多的话,当然这里要查看翻页的url,不过这操蛋的地方就是这里的翻页是使用javascript加载的,这个就有点尴尬了,找 ...
- python + selenium多进程爬取淘宝搜索页数据
python + selenium多进程爬取淘宝搜索页数据 1. 功能描述 按照给定的关键词,在淘宝搜索对应的产品,然后爬取搜索结果中产品的信息,包括:标题,价格,销量,产地等信息,存入mongodb ...
- scrapy抓取淘宝女郎 1
scrapy抓取淘宝女郎 准备工作 首先在淘宝女郎的首页这里查看,当然想要爬取更多的话,当然这里要查看翻页的url,不过这操蛋的地方就是这里的翻页是使用javascript加载的,这个就有点尴尬了,找 ...
- python(27) 抓取淘宝买家秀
selenium 是Web应用测试工具,可以利用selenium和python,以及chromedriver等工具实现一些动态加密网站的抓取.本文利用这些工具抓取淘宝内衣评价买家秀图片. 准备工作 下 ...
- python好用的库存尾货女装_Python抓取淘宝女装信息(一)
本次实战案例以抓取淘宝上连衣裙信息为切入点,共抓取4356件连衣裙产品信息.在此基础上进行初步分析.这里首先感谢@大宇,后期的数据处理与图表制作全靠大神帮助.下面我们进入正式介绍环节. 淘宝.京东.链 ...
- python3 爬虫实战案例 (抓取淘宝信息)(淘宝加了搜索必须登录的验证,此方法所到的结果都是0)
需求:对比足球,篮球,乒乓球,羽毛球,网球,相关物品的销售量保存到excle中 和抓取淘宝关键字相关信息的销售量,这和之前抓取csdn网站浏览量取不同,抓取csdn浏览量主要是通过bs4Tag标签,而 ...
最新文章
- # cat /proc/umap/vi
- 与孩子一起学编程python_与的解释|与的意思|汉典“与”字的基本解释
- Extension延展(十八)
- Js 模拟鼠标点击事件
- python中的序列类型数据结构元素的切片操作_浅析python中的分片与截断序列
- Linux sed命令高级用法精讲
- Python+Selenium学习笔记5 - python官网的tutorial - 交互模式下的操作
- java 放行文件_springmvc中关于静态资源的放行
- Hive map阶段缓慢,优化过程详细分析
- oracle中sqldrunl结尾符号,oracle笔记(韩顺平oracle视频教学整理)
- MFC中MSChart控件安装使用
- 金万维异速联服务器重装,金万维异速联服务器配置说明.doc
- 公众号搜题题库接口使用方法
- 计算机网络 电子邮件
- Netease Music Spider
- 创蓝253短信平台代码实现
- 后付费和账单分期真的可以缓解经济压力么
- Java显示the type xxx is already defined的解决方法
- OGC入门学习专栏(2) - 传感网实现-SWE(持续更新)
- BigBrother的大数据之旅Day 10 hive(1)