爬虫思路:看到就有。方法:网页元素分段截屏,图片拼接
from selenium import webdriverfrom selenium.webdriver.common.by import By
from time import sleep
import pyautogui
from PIL import Image
def capture_element_screenshot(element1, mc):
# 获取元素的位置和大小
location = element1.location
size = element1.size
# 截取整个页面的屏幕截图
driver.save_screenshot("screenshot.png")
# 打开截图并裁剪出元素区域
x = location['x']
y = location['y']
width = size['width']
height = size['height']
im = Image.open('screenshot.png')
im = im.crop((int(x), int(y), int(x + width), int(y + height)))
im.save(f'D:/element_screenshot{a}_{mc}.png')
a = input("请输入要截取的页码:")
driver = webdriver.Edge()
driver.maximize_window()
driver.get("https://wqbook.wqxuetang.com/deep/read/pdf?bid=3225892")
sleep(10)
ele = driver.find_element(By.XPATH, "//*[@id='pageImgBox" + a + "']/div")
driver.execute_script("arguments.scrollIntoView();", ele)
sleep(1)
ele1 = driver.find_element(By.XPATH, "//*[@id='pageImgBox" + a + "']/div")
# 调用函数,截取元素屏幕截图
capture_element_screenshot(ele1, "1")
# 移动鼠标到指定位置
pyautogui.moveTo(500, 500, duration=1)
# 模拟鼠标点击
pyautogui.click()
sleep(1)
for i in range(8):
# 模拟按下pagedown键
pyautogui.press('down')
sleep(0.2)
ele1 = driver.find_element(By.XPATH, f'//*[@id="pageImgBox{a}"]/div')
# 调用函数,截取元素屏幕截图
capture_element_screenshot(ele1, "2")
sleep(1)
# ele1 = driver.find_element(By.XPATH, '//*[@id="pageImgBox2"]/div')
# driver.execute_script("arguments.scrollIntoView();", ele1)
sleep(1)
# 打开图片
img1 = Image.open('D:/element_screenshot' + a + '_1.png')
img2 = Image.open('D:/element_screenshot' + a + '_2.png')
# 截取图片1的前755像素的内容
area = (0, 0, img1.width, 755)
cropped_img1 = img1.crop(area)
# 将截取的部分替换到图片2的相应位置
img2.paste(cropped_img1, (0, 0))
# 保存结果
img2.save('D:/result' + a + '.png')
driver.quit()
这思路可以。但是用协议快一点 请教个问题,网页有防爬手段,我也不是每个页面都需要,只是在浏览页面的时候觉得需要就要保存,现在我使用拷贝全部文字方式,然后粘贴到EXCEL中,使用VBA把粘贴的数据提取到其他表格中保存。想请教有没有一个什么办法可以单独保存我需要的这个页面数据,页面格式都是一样的。 学习,感谢楼主分享 所见即所得,不是看到就有:lol 不错的文章,学习了,楼主的分享。 感谢楼主分享 不错,学习了,感谢楼主分析 这个有限制,只能读取前30页,不知有没大神可以补充一下,破解后30页的内容呢,哈哈 爬虫出来的效果图在哪 小白表示看不懂 就一个标题就有思路了