python3[爬虫实战] 使用selenium,xpath爬取京东手机(上)

2023-10-28

当然了,这个任务也是从QQ群里面接过来的,主要是想提升自己的技术,一接过来是很开心的,但是,接完之后,写了又写,昨晚写了3小时,前提晚上写了2小时,搞的有些晚了,搞来搞去就卡在一个地方了,希望懂的大神们多帮忙指点一下,

使用selenium ,可能感觉用的并不是很深刻吧,可能是用scrapy用多了的缘故吧。不过selenium确实强大,很多反爬虫的都可以用selenium来解决掉吧。

好了,扯得蛋好疼,开始下文吧,首先,我们爬取的内容:

京东手机

没错,我们爬取的就是这些数据,当然就是指定这款手机了。包括手机的价格,手机的链接,当然了, 手机标题文字,什么的也都可以进行爬取,这里主要讲的是使用selenium 爬取京东上的手机商品信息

思路:

入口:
关键字搜索入口

这里使用的Chrome 浏览器,方便能看到信息是否录入正确,
这里,我们首先找到输入框,然后填上 zuk z2 手机 然后再找到 搜索按钮,选中点击后, 然后再找到zuk z2手机(蓝色的字体)

这样子点完之后,我们就会出现第一页的那个图片,显示的手机商品信息

这样子我们就把整个逻辑走完了,剩下的就交给代码了,里面的注释还算详细。

# -*- coding: utf-8 -*-
# @Time    : 2017/9/18 19:52
# @Author  : 蛇崽
# @Email   : 17193337679@163.com
# @File    : TaoBaoZUK1.py  联想zuk z1 手机评论信息爬取

import re
import time
from selenium import webdriver
import os
from lxml import etree

chromedriver = "C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe"
browser = webdriver.Chrome(chromedriver)

url = "https://www.jd.com/"
browser.get(url)
time.sleep(5)
#手机号登录
phoneLogin = browser.find_element_by_xpath('//*[@id="key"]')
phoneLogin.send_keys('ZUK Z2手机')

time.sleep(3)
# 搜索
btnNext = browser.find_element_by_xpath('//*[@id="search"]/div/div[2]/button')
btnNext.click()

# 找到手机一栏
time.sleep(3)
btnPhone = browser.find_element_by_xpath('//*[@id="J_searchWrap"]/div[2]/a')
btnPhone.click()
page = browser.page_source
html = etree.HTML(page)

links = html.xpath("//*[@id='J_goodsList']/ul[@class='gl-warp clearfix']")
print('links',links)
for link in links:
    verlink = link.xpath("./li[@class='gl-item']/div[@class='gl-i-wrap']/div[@class='p-img']/a/@href")


    price = link.xpath("./li[@class='gl-item']/div[@class='gl-i-wrap']/div[@class='p-price']/strong/text()")
    print(price)
    print(verlink)

print(len(links))

这里控制台打印了一下链接信息(需求如此):

链接信息

整个爬虫过程就完了, 这些算简单的新手爬京东商品信息的demo,喜欢的可以点个赞。
项目已上传到github上了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python3[爬虫实战] 使用selenium,xpath爬取京东手机(上) 的相关文章

  • 需要可见元素的 xpath 定位器

    我正在尝试对我的网站进行测试 在某些用户表单上遇到问题 诀窍是 表单中文本字段的数量根据用户选项的不同而变化 代码中存在禁用的文本字段 但样式为 displayed none gt 标签 所以我试图找到比逐一定位每个元素并用 try exc
  • 检测到通过 ChromeDriver 启动的 Chrome 浏览器

    我正在尝试在 python 中使用 selenium chromedriver 来访问 www mouser co uk 网站 然而 从第一次拍摄开始 它就被检测为机器人 有人对此有解释吗 此后我使用的代码 options Options
  • 使用 Selenium 处理验证码

    我正在尝试自动化一个表单 在表单提交过程中我会得到重新验证码 我陷入困境并弄清楚我们如何使用 selenium webdriver 处理验证码文本 虽然这个验证码正在实时进行图灵测试实施 但是我仍然在寻找某种方法来处理这种情况 所以你不能真
  • Selenium 中的“断言”与“验证”

    Selenium 执行的检查通常有两种形式 assertFoo 和 verifyFoo 据我所知 assertFoo 使整个测试用例失败 而 verifyFoo 只是记录该检查的失败并让测试用例继续进行 因此 使用 verifyFoo 即使
  • 如何使用 xpath 检查某个对象在网页中是否可见?

    我正在 R 中使用 RSelenium 包来进行网络抓取 有时加载网页后 需要检查某个对象在网页中是否可见 例如 library RSelenium open a browser RSelenium startServer remDr lt
  • 使用 TestNG 运行并行测试时捕获 WebDriver 屏幕截图

    我目前正在通过分别重写 TestListenerAdapter 方法 onTestFailure 和 onTestSuccess 来捕获 TestNG 中失败和成功的屏幕截图 为此 您需要指定要截取屏幕截图的驱动程序 我的问题 在方法级别并
  • 使用 Selenium 完成 Internet Explorer 身份验证对话框

    我正在使用 Selenium 来模拟用户来自动化一些遗留软件 该软件仅适用于 IE6 我在兼容模式下使用 IE11 并且有点糟糕 软件中有一个点会出现 Windows 安全 对话框 在用户 模拟器可以继续操作之前 这需要凭据 我在用着IAl
  • 运行多个并行 Selenium WebDriver 会话

    我想知道我们是否能够运行两个 Selenium WebDriver 会话 或者如何使用同一个 WebDriver 处理两个浏览器窗口并并行运行它们 尝试像下面这样定义您的 TestNg 套件 然后它将同时开始运行两者
  • 使用selenium IDE提取部分文本并将其放入变量中

    有人可以告诉我应该使用哪个命令来使用 Selenium Ide 从文本中仅提取数字 694575 并将其放入变量中以供进一步使用 这是带有文本的 div div class loginBoxTitle Edit Exhibition Cen
  • 运行测试项目时自动启动ASP.MVC项目

    我正在尝试为我的 ASP 网站设置一个测试项目 对于某些测试 我想使用 selenium 来执行端到端测试 因此 我的网站必须运行 以便测试可以访问该网站 运行测试时如何启动我的网站项目 请参考以下链接 我相信这是可能的 但会有点棘手 这些
  • 使用 Selenium 导航时的陈旧对象引用

    我一直在尝试一个简单的程序 它可以从新页面导航和获取数据 返回历史记录并打开其他页面并获取数据等等 直到访问所有链接并获取数据 在以下网站上获得结果后 我尝试循环浏览第一列中获得的所有链接 并逐个打开这些链接并从每个页面中提取文本 但下面的
  • 如何单击并验证弹出窗口(警报)是否存在

    我正在使用硒 当尝试单击按钮时 它会创建弹出窗口 警报 并且不返回页面对象 因此 我不能单独使用 click 因为此方法需要一个页面对象 并最终因超时而失败 我可以使用 chooseOkOnNextConfirmation 但这将单击弹出窗
  • Selenium/BeautifulSoup - WebScrape 该字段

    我的代码运行良好 并打印除带有下拉列表的行之外的所有行的标题 例如 如果单击第 4 行 则会出现一个下拉菜单 我实现了一个 尝试 理论上会单击下拉菜单 然后拉出标题 但是 当我执行 click 并尝试打印时 对于具有这些下拉列表的行 它们不
  • 如何在两个条件下正确执行 WebDriverWait

    我创建了代码 new WebDriverWait driver 100 until new ExpectedCondition
  • Maven/Junit 并行执行 - Cucumber-JVM v4.0.0

    我正在努力获取与 JUnit Maven 一起使用的 Cucumber JVM v4 0 0 的新并行执行功能 作为指定here https github com cucumber cucumber jvm tree v4 0 0 juni
  • 使用输入按钮处理网站上的分页

    试图使用硒抓取这个网站 我的代码可以工作 但目前它只抓取第一页 该页面使用输入按钮作为浏览页面的一种方式 因此我想逐个单击每个按钮 但它不起作用 有没有人有任何其他方法来处理此类分页的导航 import requests from sele
  • ElementNotVisibleException:消息:元素在 Robot Framework 中不可交互

    示例代码 div class modal footer div
  • Internet Explorer Selenium Protractor e2e 测试

    我想在我们的 CI 构建过程中添加一些 e2e 测试 我已经针对 chrome firefox 添加了它们 作为最简单的 但我真的很想为几个 IE 版本做这件事 如何在 linux mac 上的构建过程中注入它 我发现这样的文章 http
  • XPath:dot和text()之间的区别

    我的问题是关于使用点和的细节text in XPath 例如 以下find element行返回相同的元素 driver get http stackoverflow com driver find element by xpath a t
  • 即使页面未完全加载,我们也可以使用 Selenium 获取页面源吗(TimeoutException: Message: timeout)?

    即使遇到 TimeoutException Message timeout 也能获取页面源码吗 当我调用 driver page source 时 有时无法加载整页 但我只需要它的部分信息 尚未确定 所以我只想在任何情况下保存页面 是否可以

随机推荐

  • Javascript设计模式-06-代理模式

    Javascript设计模式 06 代理模式 简介 代理模式就是为其他对象提供一种代理 代用品或者占位符 以控制对这个对象的访问 代理对象角色内部含有对真实对象的引用 从而可以操作真实对象 同时代理对象提供与真实对象相同的接口 以便在任何时
  • 离散型制造企业如何选择MES系统?

    随着MES系统越来越被企业重视 并被运用到很多制造业中 MES对于制造企业来说 其所需要的要求是各不相同的 比如离散型制造企业 该如何选择MES系统呢 什么是离散型制造企业 离散型制造企业的产品往往由多个零件经过一系列并不连续的工序的加工最
  • EFM32 硬件I2C通讯案例

    前言 最近项目上用到了EFM32HG222F64G芯片中的硬件通讯 i2c通讯不稳定问题 导致花了很长时间去解决 走了不少弯路 最终还是解决了 在此写一下 做个记录 也方便给后面做产品的攻城狮 少走一些弯路吧 好了 进入正题 来个直接点 直
  • dayjs时间处理库的基本使用

    1 获取当前时间 let a dayjs 2 时间格式化 let endTime dayjs format YYYY MM DD 3 获取当前时间之前的时间 day js可以轻松获取N小时 天 月 年前等时间 如以下代码获取的是14天前的时
  • java连接数据库的查询方法(一个方法查任意表,任意字段)

    目录 前言 1 普通查询方法 1 1实现步骤 1 1 1预加载 1 1 2通过驱动管理器获取Connection对象 1 1 2通过Connection对象来创建命令对象 1 1 3通过命令对象获取结果集 2 不普通的查询方法 2 1获取类
  • 原型的价值与注意事项

    原型的价值 对于产品经理来讲在工作中原型的价值主要体现以下三个部分 在原型设计阶段花费的时间 可以避免额外的工作 节省总体时间 精力和成本 原型是展示 讲述 体验之源 常用于做早期评审 以确保你的想法符合目标市场 相对于文档 产品原型更加有
  • codemirror 部分配置信息 中文解释

    介绍 CodeMirror是一款在线的支持语法高亮的代码编辑器 官网 http codemirror net 下载后 解压开到的文件夹中 lib下是放的是核心库和核心css 模式下放的是各种支持语言的语法定义 主题目录下是支持的主题样式 一
  • r语言练习题3

    r语言练习题3 选择题练习 1 创建R 的数据框的函数 2 R中和 或非分别表示为 3 round 3 475 digits 2 返回值为 4 用R语言绘制直方图的命令 4 1用R语言绘制柱形图的命令 4 2用R语言绘制饼图的命令 5 R中
  • 如何写好技术方案

    一 前言 作为一个技术开发者 特别是高级 资深开发 架构师等 往往会遇到根据需求撰写技术方案 那么如何撰写一篇好的技术方案设计 我们今天就来聊一聊这个话题 二 技术方案是否有必要 答案是肯定的 我见过太多由于前期规划不到位 甚至是没有技术方
  • WebGL解决中文字体过大的问题

    最近公司项目要转成Webgl格式 打包测试后发现会把字体文件一同打包进去 导致打包文件很大 打包了一个空场景 使用的字体是Window自带的微软雅黑 字体占用空间很大 后来发现Unity有一个自带的TextMesh Pro 也可以进行文字输
  • 在已安装windows11环境中利用EasyBCD引导安装Ubuntu22.04(无需U盘)

    一 下载 1 下载Ubuntu 放到C盘 官网下载https ubuntu com download desktop 2 下载EasyBCD 链接 https pan baidu com s 1 KDr6kmVKH2u43W6XKYURg
  • 随笔篇----比特的传输

    琐碎的知识又增加了 这是我觉的比较有意思的科普 解开了一些生活中的小疑问 例如 电话 网页 电视 这些信号怎么传递的 人们怎么就成了千里眼 顺风耳 本文目的为 简单科普我们生活周围的信息是如何传递 如果学过通信的朋友可以略过啦哈 关键词 A
  • 软件测试阶段的风险

    1 需求风险 2 测试用例风险 3 缺陷风险 4 代码质量风险 5 测试环境风险 6 测试技术风险 7 回归测试风险 8 沟通协调风险 9 其他不可预计的风险 软件测试常见的风险 主要有以下几点 1 需求风险 对软件需求理解不够准确 导致测
  • pyinstaller打包执行文件报错NameError: name ‘defaultParams‘ is not defined问题解决方案

    老猿Python博文目录 https blog csdn net LaoYuanPython 一 问题 最近在执行以前打包的一个PyQT程序时报错 错误信息如下 F coffeDog videoToGif dist video2Gif gt
  • 本地资源加载不了 file:// net::ERR_UNKNOWN_URL_SCHEME

    本地资源加载不了 file net ERR UNKNOWN URL SCHEME 解决 开发环境使用tsFile 生产环境使用file
  • 用git创建空白分支

    用git创建空白分支 许多时候 需要添加的分支的代码与原来的代码没有一点关系 若是我们创建分支的话 则会继承master原来的东西 此时可以创建一个空白的分支 git checkout orphan test 这个时候会有许多无关文件存在
  • arp攻击实验(一)用一条指令让对方瞬间无法上网

    前言 本实验主要是利用局域网主机在进行2 3层通信时 协议上的漏洞 利用ARP欺骗 造成局域网内主机通信的失败 本文摘自 泰泰博客 www taitaiblog com 更多相关资源可访问该网站 实现原理 其主要原理是局域网内的 攻击机 通
  • centos 7 中的对文件的基本操作

    在文件夹中创造文件 touch 未创建前 在当前文件夹创建后并查看 创造文件夹 mkdir 未创建前 创建之后并查看 如果需要一次创造多个文件夹时 需要用到参数 p 递归创建文件夹 并用命令tree查看文件的结构 文件的复制 cp 复制te
  • [转]OpenSynergy的COQOS Hypervisor SDK-实现仪表和车载信息娱乐系统共享显示

    如果你认为本系列文章对你有所帮助 请大家有钱的捧个钱场 点击此处赞助 赞助额0 1元起步 多少随意 声明 本文只用于个人学习交流 若不慎造成侵权 请及时联系我 立即予以改正 锋影 email 174176320 qq com OpenSyn
  • python3[爬虫实战] 使用selenium,xpath爬取京东手机(上)

    当然了 这个任务也是从QQ群里面接过来的 主要是想提升自己的技术 一接过来是很开心的 但是 接完之后 写了又写 昨晚写了3小时 前提晚上写了2小时 搞的有些晚了 搞来搞去就卡在一个地方了 希望懂的大神们多帮忙指点一下 使用selenium