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()
目录
相关文章
|
16天前
|
数据采集 Web App开发 前端开发
Python爬虫进阶:Selenium在动态网页抓取中的实战
【10月更文挑战第26天】动态网页抓取是网络爬虫的难点,因为数据通常通过JavaScript异步加载。Selenium通过模拟浏览器行为,可以加载和执行JavaScript,从而获取动态网页的完整内容。本文通过实战案例,介绍如何使用Selenium在Python中抓取动态网页。首先安装Selenium库和浏览器驱动,然后通过示例代码展示如何抓取英国国家美术馆的图片信息。
35 6
|
6月前
|
Web App开发 IDE 测试技术
实战练习:用airtest-selenium脚本爬取百度热搜标题
实战练习:用airtest-selenium脚本爬取百度热搜标题
140 0
|
数据采集 前端开发 JavaScript
Selenium+2Captcha 自动化+验证码识别实战
Selenium+2Captcha 自动化+验证码识别实战
402 0
selenium-鼠标键盘事件+内附实战
selenium-鼠标键盘事件+内附实战
126 0
|
Web App开发 JavaScript 测试技术
selenium-等待时间+窗口操作详解+实战
selenium-等待时间+窗口操作详解+实战
258 0
|
前端开发 索引
selenium-元素定位+下拉选选项实战
selenium-元素定位+下拉选选项实战
156 0
|
前端开发 黑灰产治理 索引
selenium-元素定位+下拉框代码实战
selenium-元素定位+下拉框代码实战
187 0
|
Java 测试技术 C语言
软件工程高效学 | 实战案例:Selenium单元测试实战
软件工程是计算机领域的一门专业基础课,它对于培养开发者的软件素质、提高开发者的软件开发能力与软件项目管理能力具有重要意义。本篇介绍了Selenium单元测试实战。
145 0
软件工程高效学 | 实战案例:Selenium单元测试实战
|
测试技术 Python
HTMLReport应用之Unittest+Python+Selenium+HTMLReport项目自动化测试实战
HTMLReport应用之Unittest+Python+Selenium+HTMLReport项目自动化测试实战
837 0
HTMLReport应用之Unittest+Python+Selenium+HTMLReport项目自动化测试实战