搜索
Hi~登录注册
查看: 965|回复: 0

Python selenium如何打包静态网页并下载

[复制链接]

0

主题

0

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2020-8-19 05:47:25 | 显示全部楼层 |阅读模式
需求:单纯的将page.source写入文件的方式,会导致一些图片无法表现,对于google浏览器,直接将页面打包下载成一个mhtml格式的文件,则可以进行离线下载。对应python selenium 微信公众号汗青文章随手一点就返回首页?郁闷之下只好将他们都下载下来。:https://www.jb51.net/article/193111.htm
遇到的问题:
1、单纯使用webdriver.ActionChains无法完成下载动作,未能操作windows窗口。
2、没有找到相关能直接下载.mhtml的命名接口。
3、pywin32置顶窗口的使用不顺利。
解决思路:
1、使用selnium打开浏览器,不要操作,让其保持置顶
2、使用pyautogui、pyperclip操作键盘、鼠标、剪切板进行下载文件。
准备材料:
需要将主动化操作的一些图片截取下来,以作为后期图片匹配使用。

实现:
1、打开爬取好的链接,遍历所有需要下载的页面
  1. # 读取文件filename = r'data/01 爬取微信公众号汗青文章/urls 二律背反的一灯如豆-out.xlsx'df = pd.read_excel(filename,dtype=object)df = df.reindex(columns=['日期', '标题', '原创', '地址','完成情况','储存地址'])#df = df.head(5)dfsel = (df['标题'] !='随文') & (df['完成情况'] != 1)save_folder = r"I:\code\python\data\01 爬取微信公众号汗青文章\01 二律背反的一灯如豆" + "\"# 设置保存格式为 mhtml,减少要操作文件保存下拉框的情况options = webdriver.ChromeOptions()options.add_argument('--save-page-as-mhtml')# 启动浏览器driver = webdriver.Chrome(options=options)wait = WebDriverWait(driver,10)df.loc[dfsel,"完成情况"],df.loc[dfsel,"储存地址"] = zip(*df[dfsel].apply(download_mhtml_with_not_check, axis=1,args=(driver,wait)))
复制代码
2、编写相关下载页面函数
[code]# 在timeout秒内,返回中心值,间隔时长time_setp# 封装一个pyautogui限时查找函数#def finde_gui_element(png,timeout = 5,time_setp=0.2): i = 1 if timeout
回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 点我注册

快速回复 返回顶部 返回列表