python 面向对象利用selenium【获取某东商品信息】

这篇具有很好参考价值的文章主要介绍了python 面向对象利用selenium【获取某东商品信息】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

用python程序和谷歌selenium插件获取某东商品详细信息【商品名称、商品简介,超链接】

利用selenium自动化程序 中的css页面结构索取来获取详细数据

关于谷歌selenium的安装方法和使用方法

第一步检查自己谷歌浏览器的版本

1.1 找到设置:并鼠标点击进入

selenium商品采集,python+selenium自动化爬虫程序,selenium,python爬虫,Powered by 金山文档

1.2进入设置选项后,下滑到最底部找到“关于Chrome”鼠标点击进入

selenium商品采集,python+selenium自动化爬虫程序,selenium,python爬虫,Powered by 金山文档

1.3查看谷歌浏览器的版本号

selenium商品采集,python+selenium自动化爬虫程序,selenium,python爬虫,Powered by 金山文档

第二步:进入selenium谷歌驱动网址下载对应版本号的驱动

(不要过分追求一致性,只要110.05481.xxx)xxx不一致没关系

selenium商品采集,python+selenium自动化爬虫程序,selenium,python爬虫,Powered by 金山文档

查找对应操作系统的版本(一般是win32.zip,除非你会用虚拟机,或者你用的是iphone操作系统可以选择对应的)我们的电脑不是64位操作系统吗为什么安装32位的,这我也不知道,反正大家都是这样弄的。

selenium商品采集,python+selenium自动化爬虫程序,selenium,python爬虫,Powered by 金山文档

点击下载:

将下载完成后的“chromedriver.exe“运行文件 复制到python运行的直系文件中

selenium商品采集,python+selenium自动化爬虫程序,selenium,python爬虫,Powered by 金山文档

在python的第三方库中安装好selenium

安装第三方库或者模块的方法有两种:

第一种:pycharm

第二种:命令提示符cmd的方式输入 pip install selenium

CMD全称command。即命令提示符,是在OS / 2 , Windows为基础的操作系统下的DOS 方式

第三部分代码详解:

3.1在pycharm中导入第三方模块(selenium)

时间模块
import time
网页请求模块
import requests
新版本selenium库的导入方法
from selenium.webdriver.common.by import By

3.2主函数方法的调用 :

if __name__ == '__main__':
    spider('https://www.jd.com/?',keyword='python数据结构')

3.3

spider()方法的执行模块

作用向网页发起请求,并且利用selenium方法将谷歌浏览其控制起来

def spider(url,keyword):  #构造一个方法
    # 通过运行程序打开浏览器
    open_Chrome = webdriver.Chrome()
    open_Chrome.get(url=url)
    #open_Chrome.implicitly_wait(3) #隐式等待
    input_date = open_Chrome.find_element(by=By.ID, value='key')
    input_date.send_keys(keyword)
     # 这种写法是不被允许的,input_date = open_Chrome.find_element(by=By.ID,value='key').send_keys(keyword)
    #不是input_date = open_Chrome.find_element(by=By.ID,value='').send_keys()这种方法不被允许,而是,要写都写成这样不要一个写成这样一个有进行方法的调用
    #比如:
    input_date.send_keys(Keys.ENTER) #用Keys中的点击方法
    open_Chrome.implicitly_wait(10)
    drop_down(open_Chrome)
    get_gods(open_Chrome)

执行结果:

selenium商品采集,python+selenium自动化爬虫程序,selenium,python爬虫,Powered by 金山文档

这都是程序自己干的我只是运行了一下程序

3.2让自动化程序控制谷歌浏览器在商品页界面最右侧的黑灰色滑块进行滑动

def drop_down(open_Chrome):
    for x  in range(1,12,2):
        time.sleep(1)
        j = x / 9
        js = 'document.documentElement.scrollTop = document.documentElement.scrollHeight * %f' % j
        open_Chrome.execute_script(js)
    buttons(open_Chrome)
selenium商品采集,python+selenium自动化爬虫程序,selenium,python爬虫,Powered by 金山文档

3.3当前数据页面解析:

使用的方法是:通过css选择器来定位标签元素。

使用方法:find_elements(By.####,'.xxxxx') ####表示使用那种方法,xxxxx表示该页面css的值

def get_gods(open_Chrome):
    #css选择器中#键表示id选择器,.表示class选择器
    #labels 获取的是每一个商品数据
    labels = open_Chrome.find_elements(By.CSS_SELECTOR,'.goods-list-v2 .gl-item')  #find_elements 获取的是多个数据,find_element只能获取一个
    print(labels)
    for label in labels:
         em_txt= label.find_element(By.CSS_SELECTOR,'.p-name em').text
         money_txt = label.find_element(By.CSS_SELECTOR,'.p-price strong i').text
         Release_txt = label.find_element(By.CSS_SELECTOR, '.hd-shopname').text
         hyper_link = label.find_element(By.CSS_SELECTOR,'.p-name a').get_attribute('href') #get_attribute 获取标签的属性
         print(em_txt,f"{money_txt}:元",Release_txt,hyper_link)

关于selenium页面解析的其他方法,有很多那个效率更高,比较简单就去使用那个:具体方法要去学习,如何简单调用我将写在下方

selenium商品采集,python+selenium自动化爬虫程序,selenium,python爬虫,Powered by 金山文档

新版本 find_element()的使用方法

selenium商品采集,python+selenium自动化爬虫程序,selenium,python爬虫,Powered by 金山文档

selenium的页面元素定位方法find_element

感谢这两位作者提供关于selenium的简介和最新使用方法,因为selenium已经更新了,如果在pcharm下载的selenium是2.0以上版本的要使用最新方法,如何进行简单调用请通过上方的连接地址进行访问阅读

3.4 进行多页面爬取(一个页面肯定不够)

这是一个自动点击“下一页”的按钮,click()就是自动点击的方法

selenium商品采集,python+selenium自动化爬虫程序,selenium,python爬虫,Powered by 金山文档
def buttons(open_Chrome):
    button = open_Chrome.find_element(By.CSS_SELECTOR,'.page .p-num .pn-next em')
    button.click()
    time.sleep(2)
    get_gods(open_Chrome)

关于我为什么要加上下滑的方法,大家可以去某东网页去感受一下,现在某东将两张页面合并在了一起,本质上是一张页面,但是又包含了两页信息,所以我们需要通过滑块下滑的方法将完整的一页信息加载出来,要不然拿到的数据不完整。

完整代码:

import time
import requests
from selenium.webdriver.common.by import By
from selenium import webdriver
#这种写法已经被舍弃掉了
from selenium.webdriver import Chrome
from selenium.webdriver.common.keys import Keys #模拟键盘点击
#打开浏览器
# 2.登录京东
#打开网页
def spider(url,keyword):  #构造一个方法
    # 通过运行程序打开浏览器
    open_Chrome = webdriver.Chrome()
    open_Chrome.get(url=url)
    #open_Chrome.implicitly_wait(3) #隐式等待
    input_date = open_Chrome.find_element(by=By.ID, value='key')
    input_date.send_keys(keyword)
     # 这种写法是不被允许的,input_date = open_Chrome.find_element(by=By.ID,value='key').send_keys(keyword)
    #不是input_date = open_Chrome.find_element(by=By.ID,value='').send_keys()这种方法不被允许,而是,要写都写成这样不要一个写成这样一个有进行方法的调用
    #比如:
    '''
    input_date = open_Chrome.find_element(by=By.ID, value='key').send_keys(keyword)
    input_date.send_keys(Keys.ENTER)
    '''
    input_date.send_keys(Keys.ENTER) #用Keys中的点击方法
    open_Chrome.implicitly_wait(10)
    drop_down(open_Chrome)
    get_gods(open_Chrome)
#这个自定义的方法就是让其右边的滑轮自动滑动
def drop_down(open_Chrome):
    for x  in range(1,12,2):
        time.sleep(1)
        j = x / 9
        js = 'document.documentElement.scrollTop = document.documentElement.scrollHeight * %f' % j
        open_Chrome.execute_script(js)
    buttons(open_Chrome)
def buttons(open_Chrome):
    button = open_Chrome.find_element(By.CSS_SELECTOR,'.page .p-num .pn-next em')
    button.click()
    time.sleep(2)
    get_gods(open_Chrome)
def get_gods(open_Chrome):
    #css选择器中#键表示id选择器,.表示class选择器
    #labels 获取的是每一个商品数据
    labels = open_Chrome.find_elements(By.CSS_SELECTOR,'.goods-list-v2 .gl-item')  #find_elements 获取的是多个数据,find_element只能获取一个
    print(labels)
    for label in labels:
         em_txt= label.find_element(By.CSS_SELECTOR,'.p-name em').text
         money_txt = label.find_element(By.CSS_SELECTOR,'.p-price strong i').text
         Release_txt = label.find_element(By.CSS_SELECTOR, '.hd-shopname').text
         hyper_link = label.find_element(By.CSS_SELECTOR,'.p-name a').get_attribute('href') #get_attribute 获取标签的属性
         print(em_txt,f"{money_txt}:元",Release_txt,hyper_link)
    # for label in labels:
    #     name = label.find_element(By.XPATH,'./div[@class="gl-i-wrap"]//em/font/text()')
    #     print(name)

# input()



#主函数:方法调用
if __name__ == '__main__':
    spider('https://www.jd.com/?',keyword='python数据结构')

测试结果:

selenium商品采集,python+selenium自动化爬虫程序,selenium,python爬虫,Powered by 金山文档

关于代码的解析太过于繁琐,我就不进行赘述了,大家哪里不懂可以留言私信。文章来源地址https://www.toymoban.com/news/detail-794731.html

到了这里,关于python 面向对象利用selenium【获取某东商品信息】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python下利用Selenium获取动态页面数据

    利用python爬取网站数据非常便捷,效率非常高,但是常用的一般都是使用BeautifSoup、requests搭配组合抓取静态页面(即网页上显示的数据都可以在html源码中找到,而不是网站通过js或者ajax异步加载的),这种类型的网站数据爬取起来较简单。但是有些网站上的数据是通过执行

    2024年02月06日
    浏览(52)
  • Python selenium获取元素信息

    视频版教程:一天掌握python爬虫【基础篇】 涵盖 requests、beautifulsoup、selenium 主要text属性和三个方法get_attribute(),get_property(),get_dom_attribute() text属性获取元素的文本信息; get_attribute(),get_property(),get_dom_attribute()三个方法都是获取元素的属性值 区别是property是DOM中的属性,

    2024年02月06日
    浏览(18)
  • python利用selenium获取网页head中的title

    工作中有批量获取网页head中title的应用场景,实践中遇到了一些问题,以此记录一下。 通过检查发现网页的head中的title确实有文本,但是使用selenium的driver.title提取到了空字符串’’ 接着使用driver.find_element(By.XPATH, ‘/html/head/title’).is_displayed(),得到False,说明title被隐藏了

    2024年02月13日
    浏览(22)
  • 利用selenium获取Chrome日志(Java版和Python版)

    1.方式一(推荐优先使用该方式) 2.方式二

    2024年02月17日
    浏览(40)
  • Selenium介绍--实例爬取京东商品信息与图片

    目录 一、Selenium简介 二、Selenium组成 三、Selenium特点 四、Selenium的基本使用 1.下载所用浏览器需要的驱动 2.创建项目并导入依赖 3.入门 3.代码演示 五、实例爬取京东商品信息与图片 _ 5.1 执行效果 操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chr

    2023年04月08日
    浏览(20)
  • 利用Python和Selenium获取雪球网沪深上市公司日k线走势图

    本文介绍作者如何爬取雪球网(https://xueqiu.com/)沪深股市沪深一览中的上市公司日k线走势图并截图保存至本地~ 欢迎关注作者公众号,追踪更多更新更有价值的内容。 项目用于获取雪球网沪深股市沪深一览列表中(图1)上市公司的日K线图(图2)。 图1 沪深股市-沪深一览

    2024年04月10日
    浏览(27)
  • python通过selenium爬取网页信息,python获取浏览器请求内容,控制已经打开的浏览器

    背景:通过python中直接get或者urlopen打开一些有延迟加载数据的网页,会抓取不到部分信息。 1. 命令行打开chrome,并开启调试端口 (前提,找到chrome安装目录,找到chrome.exe所在路径,添加到环境变量中,例如我的是C:Program FilesGoogleChromeApplication) remote-debugging-port指定远程调试

    2024年02月16日
    浏览(37)
  • 获取淘宝、天猫商品信息(禁止商用)(无账号)(无风控)

    一、可直接使用exe插件,适用于windows系统     二、导入模板信息     三、导出模板信息     四、导出信息包含: 1、基础信息:商品id、标题、主图、详情图、发货地、类目信息、商品属性 2、sku信息:sku库存、价格、组合id、单个id 五、支持根据商品id、平台类型直接扫描

    2024年02月12日
    浏览(23)
  • “利用义乌购API揭秘跨境贸易商机:一键获取海量优质商品列表!“

    义乌购API可以根据取商品列表。通过调用义乌购API的item_search接口,传入参数,可以获取到符合该的商品列表。 以下是使用义乌购API根据取商品列表的步骤: 注册义乌购开发者账号并获取授权码和密钥。 在代码中导入义乌购API的SDK,设置请求的U

    2024年02月05日
    浏览(17)
  • 某瓜数据app 获取达人直播商品信息接口 Sign

    本文章中所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请私信我立即删除! 之前写过:某瓜数据app Sign 具体算法分析请看上一篇,这次看一下不同的接口,同一套算法,就是入参的传递需要注意一下, 最近有小

    2024年01月23日
    浏览(23)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包