用requests.get()之后得到的源代码跟浏览器里面的不一样
崔庆才的《python3网络爬虫开发实战》在2.3.3节:
我们用urllib或requests获取到的是HTML源代码,但是这个网页是用js渲染的,上面两个库不会像浏览器那样继续运行后面请求来的js模块,所以不一样。
==================
Selenium是一个用于测试网站的自动化测试工具,支持各种浏览器包括Chrome、Firefox、Safari等主流界面浏览器,同时也支持phantomJS无界面浏览器。
安装 Selenium
pip install Selenium
安装浏览器驱动
Selenium3.x调用浏览器必须有一个webdriver驱动文件
- Chrome驱动文件下载: 点击下载chromedrive
- 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