使用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

posted @ 2021-12-03 00:11  emanlee  阅读(2117)  评论(0编辑  收藏  举报