Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python和selenium从部分网页截图_Python_Selenium_Web Scraping_Screenshot - Fatal编程技术网

使用python和selenium从部分网页截图

使用python和selenium从部分网页截图,python,selenium,web-scraping,screenshot,Python,Selenium,Web Scraping,Screenshot,我已经能够捕捉到一些元素的截图,比如带有以下代码的元素 from selenium import webdriver from PIL import Image from io import BytesIO from os.path import expanduser from time import sleep # Define url and driver url = 'https://www.formula1.com/' driver = webdriver.Chrome('chrome

我已经能够捕捉到一些元素的截图,比如带有以下代码的元素

from selenium import webdriver
from PIL import Image
from io import BytesIO
from os.path import expanduser
from time import sleep

# Define url and driver
url = 'https://www.formula1.com/'
driver = webdriver.Chrome('chromedriver')

# Go to url, scroll down to right point on page and find correct element
driver.get(url)
driver.execute_script('window.scrollTo(0, 4100)')
sleep(4) #  Wait a little for page to load
element = driver.find_element_by_class_name('race-list')
location = element.location
size = element.size
png = driver.get_screenshot_as_png()
driver.quit()

# Store image as bytes, crop it and save to desktop
im = Image.open(BytesIO(png))
im = im.crop((200, 150, 700, 725))
path  = expanduser('~/Desktop/')
im.save(path + 'F1-info.png')
这将输出到:

这是我想要的,但不是我想要的。我需要手动输入一些向下滚动的内容,由于我无法获得我想要的元素(
class='race step-1 step-2 step-3'
),我也不得不手动裁剪图像


有更好的解决方案吗?

以防有人怀疑。这就是我最终如何做到的。首先,我找到并滚动到页面的右侧,如下所示

element = browser.find_element_by_css_selector('.race.step-1.step-2.step-3')
browser.execute_script('arguments[0].scrollIntoView()', element)
browser.execute_script('window.scrollBy(0, -80)')
然后裁剪图像

im = im.crop((200, 80, 700, 560))

你试着用同样的方法来做吗?是的,但是很明显,仅仅改变类名是不够的@安德森“…没用…”。有例外吗?输出?