selenium 实战

简介: selenium 实战
#coding:utf8
from selenium import webdriver
import time
import pymongo

class JdSpider(object):
    def __init__(self):
        self.url='http://www.jd.com/'
        self.options=webdriver.ChromeOptions() # 无头模式
        self.options.add_argument('--headless')
        self.browser=webdriver.Chrome(options=self.options) # 创建无界面参数的浏览器对象
        self.i=0  #计数,一共有多少件商品

        #输入地址+输入商品+点击按钮,切记这里元素节点是京东首页的输入栏、搜索按钮
    def get_html(self):
        self.browser.get(self.url)
        self.browser.find_element_by_xpath('//*[@id="key"]').send_keys('python书籍')
        self.browser.find_element_by_xpath("//*[@class='form']/button").click()

        #把进度条件拉倒最底部+提取商品信息
    def get_data(self):
        # 执行js语句,拉动进度条件
        self.browser.execute_script(
            'window.scrollTo(0,document.body.scrollHeight)'
        )
        # 给页面元素加载时预留时间
        time.sleep(2)
        #用 xpath 提取每页中所有商品,最终形成一个大列表
        li_list=self.browser.find_elements_by_xpath('//*[@id="J_goodsList"]/ul/li')

        for li in li_list:
            #构建空字典
            item={
   }  
            item['name']=li.find_element_by_xpath('.//div[@class="p-name"]/a/em').text.strip()
            item['price']=li.find_element_by_xpath('.//div[@class="p-price"]').text.strip()
            item['count']=li.find_element_by_xpath('.//div[@class="p-commit"]/strong').text.strip()
            item['shop']=li.find_element_by_xpath('.//div[@class="p-shopnum"]').text.strip()
            print(item) 
            self.i+=1

    def run(self):
        #搜索出想要抓取商品的页面
        self.get_html()
        #循环执行点击“下一页”操作
        while True:
            #获取每一页要抓取的数据
            self.get_data()
            #判断是否是最一页
            if self.browser.page_source.find('pn-next disabled')==-1:
                self.browser.find_element_by_class_name('pn-next').click()
                #预留元素加载时间
                time.sleep(1)
            else:
                print('数量',self.i)
                break


if __name__ == '__main__':
    spider=JdSpider()
    spider.run()
目录
相关文章
|
2月前
|
Web App开发 IDE 测试技术
实战练习:用airtest-selenium脚本爬取百度热搜标题
实战练习:用airtest-selenium脚本爬取百度热搜标题
|
7月前
|
数据采集 前端开发 JavaScript
Selenium+2Captcha 自动化+验证码识别实战
Selenium+2Captcha 自动化+验证码识别实战
150 0
|
8月前
selenium-鼠标键盘事件+内附实战
selenium-鼠标键盘事件+内附实战
89 0
|
8月前
|
Web App开发 JavaScript 测试技术
selenium-等待时间+窗口操作详解+实战
selenium-等待时间+窗口操作详解+实战
153 0
|
8月前
|
前端开发 索引
selenium-元素定位+下拉选选项实战
selenium-元素定位+下拉选选项实战
83 0
|
8月前
|
前端开发 黑灰产治理 索引
selenium-元素定位+下拉框代码实战
selenium-元素定位+下拉框代码实战
111 0
|
11月前
|
API
selenium的简单实用以及实战
selenium的简单实用以及实战
|
Java 测试技术 C语言
软件工程高效学 | 实战案例:Selenium单元测试实战
软件工程是计算机领域的一门专业基础课,它对于培养开发者的软件素质、提高开发者的软件开发能力与软件项目管理能力具有重要意义。本篇介绍了Selenium单元测试实战。
112 0
软件工程高效学 | 实战案例:Selenium单元测试实战
|
JavaScript 前端开发 Python
Python Selenium库的使用【从安装到实战】(二)
Python Selenium库的使用【从安装到实战】
172 0
Python Selenium库的使用【从安装到实战】(二)
|
Web App开发 前端开发 测试技术
Python Selenium库的使用【从安装到实战】(一)
Python Selenium库的使用【从安装到实战】
318 0
Python Selenium库的使用【从安装到实战】(一)

热门文章

最新文章