当前位置:   article > 正文

使用python的selenium库进行对url进行批量访问和截图_python 批量打开网页并截图

python 批量打开网页并截图

这是使用python的selenium库进行对url的批量访问和截图。代码第一次写,也就处于勉强能跑,轻喷。

这里要在你的google目录下下载对应版本的chrome_proxy.exe和chromedriver.exe

在把chromedriver.exe放在你python的目录下

  1. import os
  2. import shutil
  3. import openpyxl
  4. from openpyxl.drawing.image import Image
  5. from selenium import webdriver
  6. # 创建目录
  7. if not os.path.exists('png'):
  8. os.mkdir('png')
  9. # 删除png文件夹中的图片
  10. if os.path.exists('png'):
  11. shutil.rmtree('png')
  12. os.mkdir('png')
  13. # 启动浏览器
  14. driver = webdriver.Chrome()
  15. # 设置浏览器窗口大小
  16. driver.set_window_size(1280, 800)
  17. # 读取URL列表
  18. urls = []
  19. with open('1.txt', 'r') as file:
  20. for line in file:
  21. urls.append(line.strip())
  22. # 创建表格
  23. table = [['URL', '页面标题']]
  24. # 遍历URL列表
  25. for url in urls:
  26. try:
  27. # 访问URL
  28. driver.get(url)
  29. # 等待页面加载完成
  30. driver.implicitly_wait(10)
  31. # 获取页面标题
  32. title = driver.title
  33. # 保存网页截图
  34. screenshot_filename = f"{title}.png"
  35. screenshot_path = os.path.join('png', screenshot_filename)
  36. driver.save_screenshot(screenshot_path)
  37. # 将URL、页面标题添加到表格中
  38. table.append([url, title])
  39. except Exception as e:
  40. print(f"访问URL出错: {url}")
  41. # 关闭浏览器
  42. driver.quit()
  43. # 创建工作簿和工作表
  44. workbook = openpyxl.Workbook()
  45. sheet = workbook.active
  46. # 写入表格数据
  47. for row in table:
  48. sheet.append(row)
  49. # 图片宽度和高度的像素大小
  50. image_width = 2 * 96 # 每个格子宽度为96像素
  51. image_height = 1 * 96 # 每个格子高度为96像素
  52. # 插入截图到表格中
  53. for i in range(1, len(table)):
  54. screenshot_path = os.path.join('png', f"{table[i][1]}.png")
  55. if os.path.exists(screenshot_path):
  56. img = Image(screenshot_path)
  57. # 设置图片大小为2x1格子大小
  58. img.width = image_width
  59. img.height = image_height
  60. cell = sheet.cell(row=i + 1, column=3) # 截图所在列
  61. sheet.add_image(img, cell.coordinate)
  62. # sheet.row_dimensions[i + 1].height = image_height / 3 # 设置行高为3x3格子大小
  63. sheet.add_image(img, cell.coordinate)
  64. # 调整列宽和行高为4x2格子大小
  65. for col in sheet.columns:
  66. max_length = 0
  67. column = col[0].column_letter
  68. for cell in col:
  69. try:
  70. if len(str(cell.value)) > max_length:
  71. max_length = len(cell.value)
  72. except:
  73. pass
  74. adjusted_width = (max_length + 2) * 1 # 额外增加1.2倍宽度,并乘以4
  75. sheet.column_dimensions[column].width = float(adjusted_width)
  76. for row in sheet.rows:
  77. sheet.row_dimensions[row[0].row].height = 45 * 2 # 行高设置为45,乘以2
  78. # 保存为xlsx文件
  79. workbook.save('output.xlsx')

在1.txt中放入网址后直接运行代码即可

运行大概如图

在output.xlsx中可以看到运行结束后的总体内容

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/474960
推荐阅读
相关标签
  

闽ICP备14008679号