使用selenium抓取淘宝数据信息

下面我就为大家分享一篇使用selenium抓取淘宝商品信息实例,具有很好的参考价值,希望对大家有所帮助。

淘宝的页面大量使用了js加载数据,所以采用selenium来进行爬取更为简单,selenum作为一个测试工具,主要配合无窗口浏览器phantomjs来使用。

import refrom selenium import webdriverfrom selenium.common.exceptions import TimeoutExceptionfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECfrom pyquery import PyQuery as pq'''wait.until()语句是selenum里面的显示等待,wait是一个WebDriverWait对象,它设置了等待时间,如果页面在等待时间内没有在 DOM中找到元素,将继续等待,超出设定时间后则抛出找不到元素的异常,也可以说程序每隔xx秒看一眼,如果条件成立了,则执行下一步,否则继续等待,直到超过设置的最长时间,然后抛出TimeoutException1.presence_of_element_located 元素加载出,传入定位元组,如(By.ID, 'p')2.element_to_be_clickable 元素可点击3.text_to_be_present_in_element 某个元素文本包含某文字'''# 定义一个无界面的浏览器browser = webdriver.PhantomJS( service_args=[  '--load-images=false',  '--disk-cache=true'])# 10s无响应就down掉wait = WebDriverWait(browser, 10)#虽然无界面但是必须要定义窗口browser.set_window_size(1400, 900)def search(): ''' 此函数的作用为完成首页点击搜索的功能,替换标签可用于其他网页使用 :return: ''' print('正在搜索') try:  #访问页面  browser.get('https://www.taobao.com')  # 选择到淘宝首页的输入框  input = wait.until(   EC.presence_of_element_located((By.CSS_SELECTOR, '#q'))  )  #搜索的那个按钮  submit = wait.until(EC.element_to_be_clickable(   (By.CSS_SELECTOR, '#J_TSearchForm > p.search-button > button')))  #send_key作为写到input的内容  input.send_keys('面条')  #执行点击搜索的操作  submit.click()  #查看到当前的页码一共是多少页  total = wait.until(EC.presence_of_element_located(   (By.CSS_SELECTOR, '#mainsrp-pager > p > p > p > p.total')))  #获取所有的商品  get_products()  #返回总页数  return total.text except TimeoutException:  return search()def next_page(page_number): ''' 翻页函数, :param page_number: :return: ''' print('正在翻页', page_number) try:  #这个是我们跳转页的输入框  input = wait.until(EC.presence_of_element_located(   (By.CSS_SELECTOR, '#mainsrp-pager > p > p > p > p.form > input')))  #跳转时的确定按钮  submit = wait.until(   EC.element_to_be_clickable(    (By.CSS_SELECTOR,     '#mainsrp-pager > p > p > p > p.form > span.J_Submit')))  #清除里面的数字  input.clear()  #重新输入数字  input.send_keys(page_number)  #选择并点击  submit.click()  #判断当前页是不是我们要现实的页  wait.until(   EC.text_to_be_present_in_element(    (By.CSS_SELECTOR,     '#mainsrp-pager > p > p > p > ul > li.item.active > span'),    str(page_number)))  #调用函数获取商品信息  get_products() #捕捉超时,重新进入翻页的函数 except TimeoutException:  next_page(page_number)def get_products(): ''' 搜到页面信息在此函数在爬取我们需要的信息 :return: ''' #每一个商品标签,这里是加载出来以后才会拿网页源代码 wait.until(EC.presence_of_element_located(  (By.CSS_SELECTOR, '#mainsrp-itemlist .items .item'))) #这里拿到的是整个网页源代码 html = browser.page_source #pq解析网页源代码 doc = pq(html) items = doc('#mainsrp-itemlist .items .item').items() for item in items:  # print(item)  product = {   'image': item.find('.pic .img').attr('src'),   'price': item.find('.price').text(),   'deal': item.find('.deal-cnt').text()[:-3],   'title': item.find('.title').text(),   'shop': item.find('.shop').text(),   'location': item.find('.location').text()  }  print(product)def main(): try:  #第一步搜索  total = search()  #int类型刚才找到的总页数标签,作为跳出循环的条件  total = int(re.compile('(\d+)').search(total).group(1))  #只要后面还有就继续爬,继续翻页  for i in range(2, total + 1):   next_page(i) except Exception:  print('出错啦') finally:  #关闭浏览器  browser.close()if __name__ == '__main__': main()

登录后复制

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

通过jquery技术实现放大镜

通过jquery技术实现放大镜

通过jquery技术实现放大镜

以上就是使用selenium抓取淘宝数据信息的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/3187270.html

(0)
上一篇 2025年3月31日 23:07:33
下一篇 2025年3月31日 23:07:46

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 2022怎么看淘宝一共花了多少钱

    怎么看淘宝一共花了多少钱是时下大家比较关注的话题之一,毕竟对于电商平台来讲每每到了节假日,必须有活动出台,从而促进消费,淘宝也是这样,下面小编就和大家一起看看淘宝消费总金额包括退款吗。 怎么看淘宝一共花了多少钱 网购是当下大家最为喜爱的购物…

    2025年4月26日
    764.2K00
  • 淘宝-搜索高级课程:多个类目第一实战,独家核心操盘手法

    淘宝-搜索高级课程:多个类目第一实战,独家核心操盘手法 3天《搜索从0干到类目第一》直播解密精华: 1.老店新做先解决人气还是层级? 2.不怼非搜,也不怼全标题,那种都是靠运气 3.词根词频表,找到最快引爆搜索的词 4.多链接操作,而不是单…

    2025年4月26日
    138.0K00
  • 3种淘宝虚拟商品赚钱方法,月入过万元 – 代下载,代上传,代购服务

    3种淘宝虚拟商品赚钱方法,月入过万元 – 代下载,代上传,代购服务  三种淘宝虚拟商品赚钱方法,月入过万元 – 代下载,代上传,代购服务的操作方法 – 利用中外信息差赚钱,操作简单,无需经验 在今天的节目里,我为大家讲解3种热门的淘宝虚拟商…

    2025年4月26日
    167.5K00
  • 2023春节后淘宝极速起盘爆流/爆单:测出赚钱新品 打造高流量爆款

    2023春节后淘宝极速起盘爆流/爆单:测出赚钱新品 打造高流量爆款 6位实战大咖,边讲边实操,提前锁定盈利 课程五大核心亮点: 2023玩法 你不可不学的2023最新玩法! 快速起盘 春节后,爆流爆单,如何蓄力! 实操讲解 边学边做,实战出…

    2025年4月25日
    50.4K00
  • 2022年淘宝8月份满减活动有哪些

    淘宝作为时下较受大家喜爱的网购平台之一,每到特殊节假日的时候,淘宝平台都会推出对应的活动,让有购物需求的用户能够放心大胆的购物,这不眼见着就8月了,小编就和大家一起看看淘宝8月份满减活动有哪些。 淘宝8月份满减活动有哪些 淘宝作为比较热门的…

    2025年4月24日
    102.2K00
  • 淘宝快递没收到却显示已签收怎么办

    网上购物是时下最受大家喜爱的购物方式之一,但由于网购从发货地址到收货地址需要经过各种快递中转站,所以很多人都有遇到淘宝快递没收到却显示已签收的情况,下面小编就和大家一起看看淘宝快递没收到却显示已签收东西还在吗。 淘宝快递没收到却显示已签收怎…

    2025年4月21日
    692.7K00
  • 2022淘宝情人节活动什么时候开始

    淘宝情人节活动什么时候开始是很多人好奇的,必经对于很多情侣们来说,情人节是必须要过的一个节日,除了西方的2.14情人节之外,还有我国传统节日“七夕”,而大多数人七夕的过法都是送东西,下面小编就和大家一起看看。 2022淘宝七夕情人节活动什么…

    2025年4月20日
    596.6K00
  • 2022淘宝跨店满减一般多久一次

    2022淘宝跨店满减一般多久一次是很多人都较为关注的,毕竟淘宝作为时下较受大家喜爱的网购平台之一,每到特殊节假日的时候,淘宝平台都会推出对应的活动,让有购物需求的用户能够放心大胆的购物,下面小编就和大家一起看看淘宝8月份有没有跨店满减活动。…

    2025年4月20日
    382.7K00
  • 淘宝88会员节非会员买东西能便宜吗

    淘宝作为时下最受大家喜爱的购物平台之一每个月都会有满减活动上线,这不就要8月份了,除了七夕,最为盛大的便是88会员节了,于是淘宝88会员节非会员买东西能便宜吗成了很多友友好奇的,一起看看吧。 淘宝88会员节非会员买东西能便宜吗 淘宝88会员…

    2025年4月20日
    721.8K00
  • 2022淘宝国庆活动什么时候开始

    2022淘宝国庆活动什么时候开始是很多人都较为关注的,毕竟淘宝作为时下较受大家喜爱的网购平台之一,每到特殊节假日的时候,淘宝平台都会推出对应的活动,让有购物需求的用户能够放心大胆的购物。 2022淘宝国庆活动什么时候开始 对于淘宝国庆活动什…

    2025年4月19日
    556.0K00

发表回复

登录后才能评论