使用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))

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

最新文章

  1. 前端工具HBuilder安装Sass插件
  2. 网站禁止右键点击js
  3. codeforces B. Strongly Connected City(dfs水过)
  4. 【CODEVS 3287】【NOIP2013】火车运输
  5. uboot在nandflash和norflash是如何运行的
  6. 读取app.config配置文件信息
  7. LINUX防火墙firewall、iptables
  8. 匿名方法和Lambda表达式
  9. 终端字形logo
  10. 使用PHP、MySQL实现修改密码 + 防止通过url强行进入系统
  11. apache 访问权限出错,apache selinux 权限问题, (13) Permission Denied
  12. Flink(三)Flink开发IDEA环境搭建与测试
  13. Android Studio 插件-Android Styler 的使用 (转)
  14. shell中参数的传递
  15. Mysql缓存中innodb_buffer_pool与Qcache的区别
  16. MapReduce的分区
  17. Android弹出Dialog使用举例
  18. C++中的常量定义
  19. 汉诺塔python实现
  20. js异步处理工作机制(setTimeout, setInterval)

热门文章

  1. linux下分割和重组文件
  2. masm的一些常用编译选项
  3. ELF 动态链接 so的动态符号表(.dynsym)
  4. mysql海量数据的优化
  5. 在Redis Sentinel环境下,jedis该如何配置
  6. JavaScript怎么把对象里的数据整合进另外一个数组里
  7. virtualenv 中 install flask 的小问题
  8. [译文]Domain Driven Design Reference(二)—— 让模型起作用
  9. sudo pip install MySQLdb
  10. (转)java之Spring(IOC)注解装配Bean详解