爬虫学习笔记day05

1.json模块
    1. javascript 中的对象和数组
        对象:{'key':'value'}
        数组:[x1,x2,x3]
    2. 作用
        json格式字符串 和 python数据类型之间的转换
    3. 常用的一些方法
        1. json.loads(): json格式--> Python数据类型
            json          python
            对象            字典
            数组            列表
        2. json.dumps(): python数据类型 -->json
            python              json
            字典                对象
            列表                数组
            元组                数组
          ## 注意 
            1. json.dumps默认使用ascii编码
            2. 添加参数 ensure_ascii=False,禁用ascii编码

2.动态网站数据抓取 - Ajax动态加载
    1. 特点 :滚动鼠标滑轮时加载
        1. 完整的查询参数
            F12 - Qurey String
        2. 发送请求是要写F12抓到的Request URL 地址
    2. 案例: 豆瓣电影排行榜数据抓取
        1. 网址:豆瓣电影 - 排行榜 - 剧情
            F12抓到:
            Request URL:https://movie.douban.com/j/chart/top_list?
        2. 目标:电影名称,电影评分

3. selenium + phantomjs 强大的网络爬虫组合
    1. selenium
        1. 定义 : Web自动化测试工具,应用于WEB自动化测试
        2. 特点
            1. 可以运行在浏览器,根据指定的命令操作浏览器,让浏览器自动加载页面
            2. 只是一个工具,不支持浏览器的功能,需要与第三方浏览器结合使用
        3. 安装
            Windows cmd : python -m pip install selenium
        
    2. phantomjs
        1. 定义:无界面浏览器
        2. 特点
            1. 把网站加载到内存进行页面加载
            2. 运行高效
        3. 安装
            1. Windows
                1. 将下载的可执行文件放到python安装目录的Scripts目录下
                2. Chromedriver.exe的下载地址
                    https://chromedriver.storage.googleapis.com/index.html
                    下载和自己浏览器相对应的版本,浏览器版本查看: 右上角->帮助
                    ->关于Google Chrome
        4. 示例代码
            1. 打开url并获取页面截图
                06_selenium+phantomjs实例1.py
            2. 填写内容,点击按钮
                06_selenium+phantomjs实例2.py


    
        5. 常用方法
            1. driver.get(url)
            2. driver.page_source : 获取响应的html
            3. driver.page_source.find("字符串")
                -1 :查找失败
                非-1 : 查找成功
            4. 单元素查找
                1. driver.find_element_by_id("")
                2. driver.find_element_by_class_name("")
                3. driver.find_element_by_xpath('xpath表达式')
                4. 只匹配第一个符合条件的节点对象
            5. 多元素查找
                1. driver.find_elements_by....
                2. 实例见 07_selenium+chrome示例.py
            6. 对象名.send_keys("内容")
            7. 对象名.click()
            8. 对象名.text
                获取节点对象的文本内容

4. Chromedriver设置无界面模式
    1. opt = webdriver.ChromeOptions()
    2. opt.set_headless()
    3. driver = webdriver.Chrome(options=opt)
    4. driver.get(url)
    ## opt对象中可添加各种功能
        比如说: 无界面 浏览器分辨率
        opt.set_headless() # 无界面
        opt.add_argument('window-size=1900x300') # 设置分辨率
5. JS分页网站案例(selenium+phantomjs)
    1.斗鱼直播主播信息抓取
    2. 抓取目标 : 主播名字,观众数量
    3. 编写xpath表达式
        1. 主播名字:
            //div[@class="live-list-content"]//span[@class="dy-name ellipsis fl"]
        2. 观众数量:
            //div[@id="live-list-content"]//span[@class="dy-num fr"]
        3. 下一页按钮(能点)
            <a href="#" class="shark-pager-next">下一页</a>
        4. 下一页按钮(不能点)
            <a href="#" class="shark-pager-next shark-pager-disable shark-pager-disable-next">下一页</a>
            

 

发布了77 篇原创文章 · 获赞 3 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_24137739/article/details/90231021