使用Python及其库selenium可以方便地自动化执行web页面操作,并且可以将web页面中的数据和内容下载到本地进行处理。下面介绍如何使用Python和selenium将web页面静态化并下载。
1. 安装Python与selenium库
首先需要确保安装了Python及其库selenium。可以使用以下命令进行安装:
pip install selenium
2. 使用selenium打开网页并获取内容
接下来使用selenium打开要下载的网页并获取网页内容,代码如下:
from selenium import webdriver
# 设置Chrome浏览器的驱动路径
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless') # 设置为无界面模式,可以在后台运行,不弹出浏览器窗口
chrome_options.add_argument('--disable-gpu')
driver = webdriver.Chrome(executable_path='chromedriver', chrome_options=chrome_options)
# 打开要下载的网页
driver.get('http://www.example.com')
# 获取网页内容
html = driver.page_source
# 关闭浏览器
driver.quit()
# 打印网页内容
print(html)
3. 使用beautifulsoup库解析网页内容
这里使用beautifulsoup库解析网页内容,可以方便地提取需要的信息。需要先安装beautifulsoup库:
pip install beautifulsoup4
然后解析网页内容:
from bs4 import BeautifulSoup
# 解析网页内容
soup = BeautifulSoup(html, 'html.parser')
4. 将网页中的CSS、JavaScript等文件保存到本地
这里以网页中的CSS文件为例进行保存。首先需要获取网页中的CSS链接地址,代码如下:
# 获取网页中的CSS链接地址列表
css_links = [link.get('href') for link in soup.find_all('link') if link.get('href') and link.get('href').endswith('.css')]
接下来循环遍历CSS链接地址,使用Python的urllib库下载CSS文件到本地:
import urllib.request
# 循环遍历CSS链接地址,下载CSS文件
for link in css_links:
urllib.request.urlretrieve(link, link.split('/')[-1])
5. 将网页保存为静态HTML文件
最后,将网页保存为静态HTML文件:
# 将网页保存为静态HTML文件
with open('example.html', 'w', encoding='utf-8') as f:
f.write(html)
以上就是使用Python和selenium将web页面静态化并下载的完整攻略。下面给出一个示例:
示例1:下载整个页面的所有CSS和JS文件并保存为本地文件
from selenium import webdriver
from bs4 import BeautifulSoup
import urllib.request
# 设置Chrome浏览器的驱动路径
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless') # 设置为无界面模式,可以在后台运行,不弹出浏览器窗口
chrome_options.add_argument('--disable-gpu')
driver = webdriver.Chrome(executable_path='chromedriver', chrome_options=chrome_options)
# 打开要下载的网页
driver.get('http://www.example.com')
# 获取网页内容
html = driver.page_source
# 关闭浏览器
driver.quit()
# 解析网页内容
soup = BeautifulSoup(html, 'html.parser')
# 获取网页中的CSS链接地址列表
css_links = [link.get('href') for link in soup.find_all('link') if link.get('href') and link.get('href').endswith('.css')]
# 循环遍历CSS链接地址,下载CSS文件
for link in css_links:
urllib.request.urlretrieve(link, link.split('/')[-1])
# 获取网页中的JS链接地址列表
js_links = [script.get('src') for script in soup.find_all('script') if script.get('src')]
# 循环遍历JS链接地址,下载JS文件
for link in js_links:
urllib.request.urlretrieve(link, link.split('/')[-1])
# 将网页保存为静态HTML文件
with open('example.html', 'w', encoding='utf-8') as f:
f.write(html)
示例2:下载页面中特定元素中的图片并保存为本地文件
from selenium import webdriver
from bs4 import BeautifulSoup
import urllib.request
# 设置Chrome浏览器的驱动路径
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless') # 设置为无界面模式,可以在后台运行,不弹出浏览器窗口
chrome_options.add_argument('--disable-gpu')
driver = webdriver.Chrome(executable_path='chromedriver', chrome_options=chrome_options)
# 打开要下载的网页
driver.get('http://www.example.com')
# 获取网页内容
html = driver.page_source
# 关闭浏览器
driver.quit()
# 解析网页内容
soup = BeautifulSoup(html, 'html.parser')
# 获取要下载图片的img标签列表
img_tags = soup.find_all('img')
# 循环遍历img标签列表,下载图片文件
for img_tag in img_tags:
img_src = img_tag.get('src')
if img_src.startswith('http'):
urllib.request.urlretrieve(img_src, img_src.split('/')[-1])
else:
urllib.request.urlretrieve('http://www.example.com' + img_src, img_src.split('/')[-1])
以上就是使用Python和selenium将web页面静态化并下载的两个示例。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python selenium如何打包静态网页并下载 - Python技术站