PYTHON 页面截屏

该代码示例展示了如何结合Selenium浏览器自动化工具和PyMySQL数据库库来实现网页数据抓取。程序首先连接到MySQL数据库,然后通过Selenium以无头模式浏览指定网址,并滚动页面以加载更多内容。在抓取过程中,它将页面截图并保存为PNG文件。最后,数据被插入到数据库的img_tmp表中。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
#需要下载chromedriver
from selenium.webdriver.chrome.options import Options

import os
import pymysql
# 1. 连接数据库,
conn = pymysql.connect(
    host='',
    user='',
    password='',
    db='',
    charset='utf8',
       # autocommit=True,    # 如果插入数据,, 是否自动提交? 和conn.commit()功能一致。
)
cur = conn.cursor()

import time
# 格式化成2016-03-20 11:45:39形式
create_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())

chrome_options = Options()
# 静默模式
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
# 禁止图片加载
chrome_options.add_experimental_option('prefs', {'profile.managed_default_content_settings.images': 2})
driver = webdriver.Chrome(options=chrome_options)

data = ['00340434496741082137','00340434496740474957']

js_height = "return document.body.clientHeight"
for i in data:
	driver.get('https://www.cne.com/English/?no='+i)
	k = 1
	height = driver.execute_script(js_height)
	while True:
		if k * 500 < height:
			js_move = "window.scrollTo(0,{})".format(k * 500)
			print(js_move)
			driver.execute_script(js_move)
			time.sleep(0.5)
			height = driver.execute_script(js_height)
			k += 1
		else:
			break
	scroll_width = driver.execute_script('return document.body.parentNode.scrollWidth')
	scroll_height = driver.execute_script('return document.body.parentNode.scrollHeight')
	driver.set_window_size(2000, scroll_height)
	tuple1 = ('img/',i, '.png')
	driver.get_screenshot_as_file(''.join(tuple1))

	sqli = "insert into img_tmp(type, tracking_no) values ('CNE', '"+i+"')";
	cur.execute(sqli)
	conn.commit()
	print(i)
	time.sleep(1)

driver.quit()

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值