zoukankan      html  css  js  c++  java
  • request-html 和 css选择器

    css选择器

    1、类选择器

      .类名

    2、id选择器

      #id值

    3、标签选择器

      标签名

    4、后代选择器

      选择器1 选择器2

    5、子选择器

      选择器1>选择器2

    6、属性选择器

      【属性名】 【name】

      【属性名=值】 【name=‘title’】

      【属性名^=值】 属性以。。开头

      【属性名$=值】 结尾

      【属性名*=值】 包含

    7、群组选择器

      选择器1,选择器2 or

    8、多条件选择器

      选择器1选择器2 and

      p【属性=值】

    request-html的牛逼之处:它集成了request库,beautifulsoup库,pyquery库,浏览器内核

    安装

     pip install requests-html

    请求

      from requests_html import HTMLSession

      ​ session = HTMLSession()

    ​ **参数:**

      ​ browser.args = [

      ​ '--no-sand',

      ​ '--user-agent=XXXXX'

      ​ ]

      ​ 响应对象 = session.request(......)

      ​ 响应对象 = session.get(......)

      ​ 响应对象 = session.post(......)

    参数和requests模块一样

     响应

    r.url

    **属性和requests模块一样

     解析

    html对象属性

    r.html.absolute_links 绝对路径 基础路径 + /d/ffdsadfsadas.jpg

    • ​ .links 相对路径
    • ​ .base_url 基础路径
    • ​ .html 拿到页面内容 (相当于r.text) 渲染之后的内容 而text是页面的文本
    • ​ .text 拿到页面上纯文本
    • ​ .encoding = 'gbk'
    • ​ .raw_html 相当于r.context
    • ​ .qp

    html对象方法

    r.html.find('css选择器') 【element对象,element对象,】

    • ​ .find('css选择器',first = True) element对象
    • ​ .xpath(‘xpath选择器’)
    • ​ .xpath('‘xpath选择器',first = True)
    • ​ .search(‘模板’) search对象
    • ​ (‘xxx{}yyy{}’)[0]
    • ​ (‘xxx{name}yyy{pwd}’)[‘name’]
    • ​ .search_all('模板') 【search对象。search对象】
    • ​ .render(.....)

      ​ **参数:**

    • ​ scripy:“”“ ( ) => {

        ​ js代码

    ​     js代码

        ​ }”“”

    • ​ scrolldow:n
    • ​ sleep:n
    • ​ keep_page:True/False

     与浏览器交互   :  r.html.page.XXX

    asynic def xxx():

    • ​ await r.html.page.XXX
    • ​ session.loop.run....(xxx())
    • ​ .screenshot({'path':路径})
    • ​ .evaluate('''() =>{js代码}’‘’})
    • ​ .cookies()
    • ​ .type('css选择器',’内容‘,{’delay‘:100})
    • ​ .click('css选择器')
    • ​ .focus('css选择器')
    • ​ .hover('css选择器')
    • ​ .waitForSelector('css选择器')
    • ​ .waitFor(1000)

    键盘事件 r.html.page.keyboard.XXX

    • .down('Shift')
    • ​ .up('Shift')
    • ​ .press('ArrowLeft')
    • ​ .type('喜欢你啊',{‘delay’:100})

    鼠标事件 r.html.page.mouse.XXX

    .click(x,y,{
      'button':'left',
      'click':1
      'delay':0
    })
    .down({'button':'left'})
    .up({'button':'left'})
    .move(x,y,{'steps':1})

    常用数据库

    下载:https://www.mongodb.com/

    注意:使用前修改bin目录下配置文件mongodb.cfg,删除最后一行的'mp'字段

    ####1. 启动服务与终止服务

    net start mongodb

    net stop mongodb

    2.创建管理员用户

    mongo

    use admin

    db.createUser({user:"yxp",pwd:"997997",roles:["root"]})

    3.使用账户密码连接mongodb

    mongo -u adminUserName -p userPassword --authenticationDatabase admin

    4.数据库

    查看数据库
    show dbs 查看数据库
    切换数据库
    use db_name 切换数据库
    增加数据库
    db.table1.insert({'a':1})  创建数据库(切换到数据库插入表及数据)
    删除数据库
    db.dropDatabase()  删数据库(删前要切换)

    5.表

    使用前先切换数据库
    查看表
    show tables 查所有的表
    增加表
    db.table1.insert({'b':2})  增加表(表不存在就创建)
    删除表
    db.table1.drop()    删表

    数据

    db.test.insert(user0)    插入一条
    db.user.insertMany([user1,user2,user3,user4,user5])   插入多条
    db.user.find({'name':'alex'})   查xx==xx
    db.user.find({'name':{"$ne":'alex'}})   查xx!=xx
    db.user.find({'_id':{'$gt':2}})   查xx>xx
    db.user.find({"_id":{"$gte":2,}}) 查xx>=xx
    db.user.find({'_id':{'$lt':3}}) 查xx<xx
    db.user.find({"_id":{"$lte":2}}) 查xx<=xx
    db.user.update({'_id':2},{"$set":{"name":"WXX",}})   改数据
    db.user.deleteOne({ 'age': 8 })   删第一个匹配
    db.user.deleteMany( {'addr.country': 'China'} ) 删全部匹配
    db.user.deleteMany({}) 删所有

    pymongo

    conn = pymongo.MongoClient(host=host,port=port, username=username, password=password)
    db = client["db_name"] 切换数据库
    table = db['表名']
    table.insert({}) 插入数据
    table.remove({})   删除数据
    table.update({'_id':2},{"$set":{"name":"WXX",}})   改数据
    table.find({}) 查数据

     

  • 相关阅读:
    Electron-Builder 打包Nsis,安装后自动运行程序
    依赖倒置原则(DIP)、控制反转(IoC)、依赖注入(DI)(C#)
    六大设计原则(C#)
    C#简单爬取数据(.NET使用HTML解析器NSoup和正则两种方式匹配数据)
    简单架构:反射实现抽象工厂+IDAL接口完全独立DAL
    C#高级语法之泛型、泛型约束,类型安全、逆变和协变(思想原理)
    委托和lambda表达式,Action和Func
    .NET中使用WebService,以及和一般处理程序、类库的区别
    C#原型模式(深拷贝、浅拷贝)
    Thread、ThreadPool、Task、Parallel的基本用法、区别以及弊端
  • 原文地址:https://www.cnblogs.com/weilantian/p/11831349.html
Copyright © 2011-2022 走看看