基于pyautogui的爬虫

本文将介绍如何使用Python的pyautogui库编写一个简单的爬虫程序。我们将分步骤讲解代码,并解释每个步骤的作用。当网站的反爬很严,设置了User-Agent和cookie仍然不管用时,可以使用这种方法。

1. 导入所需库

首先,我们需要导入所需的库:

import webbrowser 
import time 
import win32gui 
import win32con 
import pyautogui

2. 定义一个最小化窗口的函数

接下来,我们定义一个名为small_window的函数,用于最小化当前活动窗口:

def small_window():
    # print('最小化')
    hwnd = win32gui.GetForegroundWindow()
    win32gui.ShowWindow(hwnd, win32con.SW_MINIMIZE)

3. 使用webbrowser打开URL

然后,我们使用webbrowser库打开指定的URL:

webbrowser.open(url)
time.sleep(5)

这里,我们让程序等待5秒,以确保网页完全加载。

4. 使用pyautogui模拟键盘操作

接下来,我们使用pyautogui库模拟键盘操作:

pyautogui.hotkey('ctrl','s')
time.sleep(0.3)
pyautogui.typewrite('data',0.2)
time.sleep(0.3)
pyautogui.press('enter')
time.sleep(0.3)
pyautogui.press('enter')
time.sleep(0.3)
pyautogui.press('left')
time.sleep(0.3)
pyautogui.press('enter')
time.sleep(0.3)
pyautogui.press('left')
time.sleep(0.3)
pyautogui.press('enter')
time.sleep(0.3)

这里,我们模拟了按下Ctrl+S组合键保存html文件,然后输入文件名data,并按回车键确认(多次按下左键和回车是为了确保中英文输入法都能正确保存)。

5. 将新建的标签页关闭

在完成保存操作后,为了防止标签页堆积过多,还要关闭标签页。

time.sleep(6)
small_window()#先最小化是因为下载后edge会显示一个下载框,要最小化后再显示才能隐层。直接ctrl+w会删除下载的内容
time.sleep(1)
webbrowser.open('www.baidu.com')#用baidu.con唤起浏览器窗口
time.sleep(1)
pyautogui.hotkey('ctrl','w')#关闭baidu.com
time.sleep(1)
pyautogui.hotkey('ctrl','w')#关闭网址为url的窗口
time.sleep(1)
small_window()#再次最小化
time.sleep(0.5)

6. 读取页面的HTML内容

最后,我们读取HTML内容,并将其作为字符串返回:

with open(r'C:\Users\user\Downloads\data.html','r',encoding='utf-8') as f:
    text = f.read()
return text

完整代码:

def myget(url):
    def small_window():
        print('最小化')
        hwnd = win32gui.GetForegroundWindow()
        win32gui.ShowWindow(hwnd, win32con.SW_MINIMIZE)

    import webbrowser
    
    webbrowser.open(url)
    time.sleep(5)
    pyautogui.hotkey('ctrl','s')
    time.sleep(1)#电脑比较慢,所以等待了一秒
    pyautogui.typewrite('data',0.2)
    time.sleep(1)
    pyautogui.press('enter')
    time.sleep(1)
    pyautogui.press('enter')
    time.sleep(1)
    pyautogui.press('left')
    time.sleep(1)
    pyautogui.press('enter')
    time.sleep(1)
    pyautogui.press('left')
    time.sleep(1)
    pyautogui.press('enter')
    time.sleep(1)
    
    time.sleep(6)
    small_window()
    time.sleep(1)
    webbrowser.open('www.baidu.com')#其实也可以用 win32gui实现。
    time.sleep(1)
    pyautogui.hotkey('ctrl','w')
    time.sleep(1)
    pyautogui.hotkey('ctrl','w')
    time.sleep(1)
    small_window()
    time.sleep(0.5)
    with open(r'C:\Users\user\Downloads\data.html','r',encoding='utf-8') as f:
        text = f.read()
    return text

你可能感兴趣的:(爬虫,python,ui)