首页 web前端 js教程 使用selenium抓取淘宝数据信息

使用selenium抓取淘宝数据信息

Jun 07, 2018 pm 03:20 PM
selenium 抓取 淘宝

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

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

import re
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from pyquery import PyQuery as pq
'''
wait.until()语句是selenum里面的显示等待,wait是一个WebDriverWait对象,它设置了等待时间,如果页面在等待时间内
没有在 DOM中找到元素,将继续等待,超出设定时间后则抛出找不到元素的异常,也可以说程序每隔xx秒看一眼,如果条件
成立了,则执行下一步,否则继续等待,直到超过设置的最长时间,然后抛出TimeoutException
1.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技术实现放大镜

使用Puppeteer图像识别技术如何实现百度指数爬虫

使用js如何调用json

以上是使用selenium抓取淘宝数据信息的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

怎么看淘宝的发货地在哪里    查看淘宝app下单发货地址的方法 怎么看淘宝的发货地在哪里 查看淘宝app下单发货地址的方法 Mar 12, 2024 pm 04:00 PM

  淘宝app上都能够满足大家的一切购物方面的问题,这里超多的商家,超多的一些宝贝,都能够等着大家进行选择,无论大家想要买一些什么样的商品,都能够在这里搜索找到,让大家直接的下单购买,全方面的一些功能,都能够自由的进行操作哦,当大家下单成功的话,大家只需要等待商家发货,进行物流的配送即可,非常的方便,很多的时候,大家都能够选择查看到这一些商品的发货地,知道自己的这一些商品到底是哪里进行发货,尤其是对于大家购买一些电子产品的时候,都能查询一些相关的发货地的信息,避免自己买到的是一些翻新机的问题,相

淘宝如何拒收陌生人消息 淘宝如何拒收陌生人消息 Mar 02, 2024 am 08:40 AM

使用淘宝的过程中我们会收到一些陌生用户发来的消息。下面为大家介绍一下设置拒收陌生人消息的方法。1.打开手机中的淘宝进入界面后,在底部点击“消息”这一项切换进入,再在右上方点击“+”图标打开。2.这时图标下会弹出一个窗口,在里面点击选择“消息设置”这一项。3.在消息设置页面里有一个“陌生人聊天设置”,在它的上面点击进入。4.最后在进入的界面里会看到“拒收陌生人消息”的功能,在它的后面点击对应的开关按钮。当按钮设置为彩色即为开启,使用淘宝时就不会再接收到陌生用户发来的消息。

淘宝免单红包领取方法2024 淘宝免单红包领取方法2024 May 09, 2024 pm 03:22 PM

2024淘宝免单活动每日三场,大家需要在对应时间下单付款对应金额的商品,免单金额是以等额红包形式发放,接下来给大家带来了淘宝免单红包领取方法2024:抢到免单的用户,红包资格将发放至卡券包,为待激活状态;网页版淘宝暂无卡券包,仅做免单活动的中奖记录的展示;卡券包在【淘宝APP-我的淘宝-我的权益-红包】。淘宝免单红包领取方法20241、抢到免单的用户,红包资格将发放至卡券包,为待激活状态;2、网页版淘宝暂无卡券包,仅做免单活动的中奖记录的展示;3、卡券包在【淘宝APP-我的淘宝-我的权益-红包】

淘宝怎么关闭免密支付   取消免密支付的设置方法 淘宝怎么关闭免密支付 取消免密支付的设置方法 Mar 12, 2024 pm 12:07 PM

  淘宝APP上的功能超多,这些功能的存在,都是为了大家可以获得更好的购物体验,超多的一些商品种类,都是可以很好的满足不同用户们的购物需求,大家真的想买啥,就买啥,大家按类查找或者是直接的搜索查看这些商品,都是没有任何问题的存在,大家都能够放心的进行网购,给大家带来物超所值的购物服务,绝对给你们想要的一切哦,当然大家在这里购物的话,都能够发现这里多种的一些购物方式,是可以让大家进行选择,对于这里的一些免密支付的这一功能,有人喜欢,也有人不是那么的喜欢,觉得安全性没有那么的高,当然大家都能随时取消

淘宝如何关闭个性化广告 淘宝如何关闭个性化广告 Mar 01, 2024 pm 12:49 PM

我们在使用淘宝购物的过程中会经常收到软件推送的个性化广告内容,下面为大家介绍一下关闭个性化推荐广告的方法。在手机上打开淘宝app,点击右下角的“我的淘宝”,然后点击右上角的齿轮图标进入“设置”页面。2.来到淘宝的设置页面后,在其中找到“隐私”,并在上面点击进入。3.在隐私页面里会看到有一个“广告管理”,在上面点击进入。4.接下来在进入的广告管理页面下方有一个“个性化广告推荐”,在它的后面点击开关按钮上的滑块将按钮设置为灰白色。5.这时页面中会弹出一个窗口,在其中点击选择“确认关闭”这一项后,淘宝

淘宝怎么改名字 淘宝怎么改名字 Mar 24, 2024 pm 03:31 PM

改名功能在淘宝中可以让用户自由改名字昵称,有些用户并不知道淘宝怎么改名字,在我的淘宝中的设置里点击头像的淘宝账号进行修改即可,接下来小编就为大家带来了改名字昵称方法的介绍,还不知道的用户快来下载试试看吧。淘宝使用教程淘宝怎么改名字答:在我的淘宝中的设置里点击头像的淘宝账号进行修改即可详情介绍:1、进入淘宝,点击右下【我的淘宝】。2、点击右上的【设置】图标。3、点击头像。4、再点【淘宝账号】。5、点击【修改账号名】,输入并修改即可。

淘宝如何开通指纹支付 淘宝如何开通指纹支付 Mar 01, 2024 am 08:58 AM

在使用淘宝时我们可以开通一个指纹支付的功能,下面为大家介绍一下具体的操作方法。1.打开手机“淘宝”进入后,在页面的右下角位置点击“我的淘宝”进入,再在右上方点击“设置”图标打开。2.在设置页面里点击选择“支付”这一项进入。3.在支付页面里的“人脸/指纹支付”这一项上点击进入。4.接下来在进入的生物支付页面里“指纹支付”的后面显示有一个开关按钮,在上面点击把它设置为彩色即为开启。5.最后页面中会提示输入支付密码来验证身份,通过验证后页面中会出现“开通成功”的提醒,在淘宝中就可以使用指纹支付功能了。

淘宝怎么查消费总金额   查看消费总额的方法 淘宝怎么查消费总金额 查看消费总额的方法 Mar 12, 2024 pm 03:07 PM

  我们平常需要进行网购的话,大家都是会选择淘宝这一平台,完全都能够满足大家一切的购物方面的需求,拥有着超多的一些商品的资源,真的各种各样的一些商品,都是汇聚了在这一个平台上,大家发现这里的一些商品的类别超多,完全都能够根据自己的需求进行挑选,想买啥,就能买啥的,所以大家肯定都是会在这里购买到超多的一些商品,这些商品的价格,都是有着很大的一些不同,所有的这一些购物记录都能保存下来,能够方便大家随时的进行查询,那么你们知道自己在这里购物的话,到底是花了多少的一些钱呢,想必大家非常的好奇,下面小编都

See all articles