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

思路:

入口:

关键字搜索入口

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

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

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

 # -*- coding: utf-8 -*-

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

 #如果没有配置chromedriver.exe的环境变量,要写完整路径
 # chromedriver = "C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe"
 chromedriver = "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:
     # 通过xpath获取商品链接
     verlink = link.xpath("./li[@class='gl-item']/div[@class='gl-i-wrap']/div[@class='p-img']/a/@href")

     #通过xpath获取商品价格
     price = link.xpath("./li[@class='gl-item']/div[@class='gl-i-wrap']/div[@class='p-price']/strong")
     print(price)
     print(verlink)

 print(len(links))

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

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

  1. Python3爬虫:(一)爬取拉勾网公司列表

    人生苦短,我用Python 爬取原因:了解一下Python工程师在北上广等大中城市的薪资水平与入职前要求. Python3基础知识 requests,pyquery,openpyxl库的使用 爬取前的 ...

  2. selenium+phantomjs爬取京东商品信息

    selenium+phantomjs爬取京东商品信息 今天自己实战写了个爬取京东商品信息,和上一篇的思路一样,附上链接:https://www.cnblogs.com/cany/p/10897618. ...

  3. Java实现爬取京东手机数据

    Java实现爬取京东手机数据 最近看了某马的Java爬虫视频,看完后自己上手操作了下,基本达到了爬数据的要求,HTML页面源码也刚好复习了下,之前发布两篇关于简单爬虫的文章,也刚好用得上.项目没什么太 ...

  4. 爬虫实战(二) 用Python爬取网易云歌单

    最近,博主喜欢上了听歌,但是又苦于找不到好音乐,于是就打算到网易云的歌单中逛逛 本着 "用技术改变生活" 的想法,于是便想着写一个爬虫爬取网易云的歌单,并按播放量自动进行排序 这篇 ...

  5. Python3爬虫系列:理论+实验+爬取妹子图实战

    Github: https://github.com/wangy8961/python3-concurrency-pics-02 ,欢迎star 爬虫系列: (1) 理论 Python3爬虫系列01 ...

  6. 爬虫实战(三) 用Python爬取拉勾网

    目录 0.前言 1.初始化 2.爬取数据 3.保存数据 4.数据可视化 5.大功告成 0.前言 最近,博主面临着选方向的困难(唉,选择困难症患者 >﹏<),所以希望了解一下目前不同岗位的就 ...

  7. python+selenium+xpath 爬取天眼查工商基本信息

    # -*- coding:utf-8 -*-# author: kevin# CreateTime: 2018/8/16# software-version: python 3.7 import ti ...

  8. 爬虫实战(一) 用Python爬取百度百科

    最近博主遇到这样一个需求:当用户输入一个词语时,返回这个词语的解释 我的第一个想法是做一个数据库,把常用的词语和词语的解释放到数据库里面,当用户查询时直接读取数据库结果 但是自己又没有心思做这样一个数 ...

  9. Python 爬虫-爬取京东手机页面的图片

    具体代码如下: __author__ = 'Fred Zhao' import requests from bs4 import BeautifulSoup import os from urllib ...

随机推荐

  1. ubuntu安装qq教程

    安装策略是wine+wine QQ TM2013,wine QQ TM2013是一款专门为wine进行优化的版本 我的ubuntu系统是14.04版本,64位 1. sudo apt-get inst ...

  2. win32多线程学习笔记

    <多核程序设计技术> 第五章--线程api,一个使用windows事件的线程应用程序,vs2008下编译调试通过. // 线程通信机制.cpp : 定义控制台应用程序的入口点. // #i ...

  3. 详解PNG文件结构

    前言 PNG,JPEG,GIF,BMP作为数据压缩文件,有许多重要的信息我们需要区深度解析. 一.PNG的文件结构 1.1.数据块构成结构 PNG文件结构很简单,主要有数据块(Chunk Block) ...

  4. HTML DOM - 导航

    HTML DOM 节点列表长度 length 属性定义节点列表中节点的数量. 您可以使用 length 属性来循环节点列表: x=document.getElementsByTagName(" ...

  5. 对DB2常见错误的列举以及破解方案

    我们今天主要描述的是DB2常见错误还有正对这些错误的解决方案,以下就是文章对DB2常见错误还有正对这些错误的解决方案的主要内容的详细描述. 以下的文章主要是介绍DB2常见错误还有正对这些错误的解决方案 ...

  6. Mac下通过brew安装指定版本的nodejs

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px "PingFang SC Semibold"; color: #2c303 ...

  7. Spring Boot实战:模板引擎

    虽然现在很多开发,都采用了前后端完全分离的模式,即后端只提供数据接口,前端通过AJAX请求获取数据,完全不需要用的模板引擎.这种方式的优点在于前后端完全分离,并且随着近几年前端工程化工具和MVC框架的 ...

  8. Java 锁机制 synchronized

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/75126630 本文出自[赵彦军的博客] 1.前言 在多线程并发编程中Synchro ...

  9. 从输入一个URL到页面完全显示发生了什么?

    这是经典的前端问题,主要是对浏览器的工作原理有个理解! 网络通信走的一般是五层因特网协议,详见下图.图片来自于https://images2018.cnblogs.com/blog/882926/20 ...

  10. EF Code First 数据迁移配置

    这里我想讲清楚code first 数据迁移的两种模式,还有开发环境和生产环境数据迁移的最佳实践. 1.1 数据迁移综述 EF Code first 虽然已经有了几种不同的数据库初始化策略,但是大部分 ...