• 使用requests.get()得到的源代码与浏览器中的不一样


    用requests.get()之后得到的源代码跟浏览器里面的不一样

    崔庆才的《python3网络爬虫开发实战》在2.3.3节:

    我们用urllib或requests获取到的是HTML源代码,但是这个网页是用js渲染的,上面两个库不会像浏览器那样继续运行后面请求来的js模块,所以不一样。

    ==================

    Selenium是一个用于测试网站的自动化测试工具,支持各种浏览器包括Chrome、Firefox、Safari等主流界面浏览器,同时也支持phantomJS无界面浏览器。

    安装 Selenium

    pip install Selenium

    安装浏览器驱动

    Selenium3.x调用浏览器必须有一个webdriver驱动文件

    1. Chrome驱动文件下载: 点击下载chromedrive
    2. Firefox驱动文件下载:   点解下载geckodriver

     下载合适版本文件,解压,放到某个位置 , 例如 D:\software\geckodriver-v0.30.0-win64\

    配置环境变量

    设置浏览器的地址非常简单。 我们可以手动创建一个存放浏览器驱动的目录,如: F:\GeckoDriver , 将下载的浏览器驱动文件(例如:chromedriver、geckodriver)丢到该目录下。

    我的电脑–>属性–>系统设置–>高级–>环境变量–>系统变量–>Path,将“F:\GeckoDriver”目录添加到Path的值中。比如:Path字段;F:\GeckoDriver

     示例,点击百度中的新闻

    # -*- coding:UTF-8 -*-
    from selenium import webdriver
    
    from time import sleep
    #1.创建Chrome浏览器对象,这会在电脑上在打开一个浏览器窗口
    browser = webdriver.Firefox(executable_path ="D:\software\geckodriver-v0.30.0-win64\geckodriver.exe")
    
    #2.通过浏览器向服务器发送URL请求
    browser.get("https://www.baidu.com/")
    
    sleep(3)
    
    #3.刷新浏览器
    browser.refresh()
    
    #4.设置浏览器的大小
    browser.set_window_size(1400,800)
    
    #5.设置链接内容
    element=browser.find_element_by_link_text("新闻")
    element.click()

    出现错误:

    selenium.common.exceptions.WebDriverException: Message: 'geckodriver-v0.30.0-win64' executable may have wrong permissions.

    解决方法:

    browser = webdriver.Firefox(executable_path ="D:\software\geckodriver-v0.30.0-win64\")

    修改为:

         browser = webdriver.Firefox(executable_path ="D:\software\geckodriver-v0.30.0-win64\geckodriver.exe")

     下面示例失败:

    from selenium import webdriver
    import time
    
    browser = webdriver.Firefox(executable_path ="D:\software\geckodriver-v0.30.0-win64\geckodriver.exe")
    
    get_html = "test.html"
    # 打开文件,准备写入
    f = open(get_html, 'wb')
    url = 'https://www.baidu.com/'  # 这里填你要保存的网页的网址
    browser.get(url)
    time.sleep(2)  # 保证浏览器响应成功后再进行下一步操作
    # 写入文件
    f.write(browser.page_source.encode("gbk", "ignore"))  # 忽略非法字符
    print('写入成功')
    # 关闭文件
    f.close()

     示例,把百度的首页保存,保存html (成功)

    from selenium import webdriver
    import time
    
    browser = webdriver.Firefox(executable_path ="D:\software\geckodriver-v0.30.0-win64\geckodriver.exe")
    
    get_html = "test2.html"
    # 打开文件,准备写入
    f = open(get_html, "w", encoding='utf-8')
    url = 'https://www.baidu.com/'  # 这里填你要保存的网页的网址
    browser.get(url)
    time.sleep(2)  # 保证浏览器响应成功后再进行下一步操作
    # 写入文件
    f.write(browser.page_source)  # 忽略非法字符
    print('写入成功')
    # 关闭文件
    f.close()

    REF

    https://blog.csdn.net/weixin_40822925/article/details/106973803

    https://blog.csdn.net/weixin_36279318/article/details/79475388

  • 相关阅读:
    linux nfs
    gsoap
    error: ignoring return value of 编译错误处理
    SSIS可靠性和扩展性—错误输出
    SSIS中的脚本—脚本组件
    SQL点滴24—监测表的变化(转载)
    SSIS中的脚本—脚本任务
    SSIS可靠性和扩展性—简介
    SSIS中的脚本—表达式
    SSIS可靠性和扩展性—可扩展性
  • 原文地址:https://www.cnblogs.com/emanlee/p/15636157.html
Copyright © 2020-2023  润新知