当前位置: 首页 > news >正文

嘉定网站公司教务管理系统er图

嘉定网站公司,教务管理系统er图,广西住房城乡建设厅官方网站,做网站的网站#x1f388;#x1f388;作者主页#xff1a; 喔的嘛呀#x1f388;#x1f388; #x1f388;#x1f388;所属专栏#xff1a;python爬虫学习#x1f388;#x1f388; ✨✨谢谢大家捧场#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右#xff0c;一定要天天… 作者主页 喔的嘛呀 所属专栏python爬虫学习 ✨✨谢谢大家捧场祝屏幕前的小伙伴们每天都有好运相伴左右一定要天天开心哦✨✨  目录 十、处理动态内容 十一、处理验证码 十二、模拟登录 十三、跨页面操作 十四、异常处理 十五、数据存储 存储到文件例如 CSV 文件 存储到数据库例如 SQLite 存储到其他存储介质例如 MongoDB 十六、反爬虫策略 十七、性能优化 十八、定时任务 十九、 与其他库和工具的集成 helllo兄弟姐妹们今天我们接着把第二十二天剩下的十个知识点学完从第十个开始。 十、处理动态内容 处理动态加载内容的常见方法是通过模拟用户操作来触发页面加载新内容。对于需要滚动页面加载的情况可以使用 Selenium 的 execute_script 方法来执行 JavaScript 代码从而实现滚动页面的效果。下面是一个示例代码演示如何使用 Selenium 模拟滚动页面来加载更多内容 from selenium import webdriver import time# 启动浏览器 driver webdriver.Chrome()# 打开网页 driver.get(https://example.com)# 模拟滚动页面 scroll_pause_time 2 # 每次滚动后等待时间 screen_height driver.execute_script(return window.screen.height;) # 获取屏幕高度i 1 while True:# 记录滚动前页面高度last_height driver.execute_script(return document.body.scrollHeight;)# 模拟滚动到页面底部driver.execute_script(window.scrollTo(0, document.body.scrollHeight);)# 等待页面加载time.sleep(scroll_pause_time)# 计算新的页面高度new_height driver.execute_script(return document.body.scrollHeight;)# 如果新的页面高度和上次相同则说明已经滚动到底部if new_height last_height:break# 打印滚动次数print(fScrolling {i} times)i 1# 获取页面数据 data driver.page_source# 关闭浏览器 driver.quit()# 处理页面数据如解析数据等 在这个示例中我们首先启动 Chrome 浏览器并打开了一个示例网页。然后我们通过执行 JavaScript 代码来模拟滚动页面到底部的效果。在每次滚动后我们等待了2秒钟以确保页面有足够的时间加载新内容。如果页面高度不再增加说明已经滚动到了页面底部循环就会结束。最后我们获取了页面的 HTML 源码并可以继续处理数据如解析数据等操作。 请注意这只是一个简单的示例。实际情况可能会更复杂具体取决于要爬取的网站和其动态加载数据的机制。 十一、处理验证码 处理网页中的验证码通常需要结合 Selenium 和图像识别技术。下面是一个使用 Selenium 和 pytesseract 库来处理网页中简单验证码的示例 首先安装 Pillow、pytesseract 和 pytesseract 库 pip install Pillow pytesseract selenium 然后下载并安装 Tesseract OCR并将其添加到系统路径中。 接下来使用以下代码示例 from PIL import Image import pytesseract from selenium import webdriver from selenium.webdriver.common.by import By import time import requests from io import BytesIO# 设置 Tesseract OCR 路径 pytesseract.pytesseract.tesseract_cmd rC:\\Program Files\\Tesseract-OCR\\tesseract.exe# 启动浏览器 driver webdriver.Chrome()# 打开网页 driver.get(https://example.com)# 找到验证码图片元素 captcha_element driver.find_element(By.XPATH, //img[idcaptcha-image])# 获取验证码图片的链接 captcha_image_url captcha_element.get_attribute(src)# 下载验证码图片 response requests.get(captcha_image_url) captcha_image Image.open(BytesIO(response.content))# 识别验证码 captcha_text pytesseract.image_to_string(captcha_image)# 输入验证码 captcha_input driver.find_element(By.XPATH, //input[idcaptcha-input]) captcha_input.send_keys(captcha_text)# 提交表单 submit_button driver.find_element(By.XPATH, //button[idsubmit-button]) submit_button.click()# 等待页面加载 time.sleep(2)# 获取页面数据 data driver.page_source# 关闭浏览器 driver.quit()# 处理页面数据如解析数据等 在这个示例中我们首先设置了 Tesseract OCR 的路径。然后使用 Selenium 打开了一个示例网页并找到了验证码图片元素。我们通过请求验证码图片的链接并使用 pytesseract 库识别验证码中的文本。最后我们将识别结果填写到验证码输入框中并提交表单。 请注意这只适用于简单的验证码。对于复杂的验证码可能需要使用更复杂的技术和工具。 注意 Tesseract OCROptical Character Recognition是一个开源的光学字符识别引擎由 Google 开发并维护。它能够将图像中的文字转换为可编辑的文本。Tesseract 能够识别超过100种语言的文字并且支持许多图像格式。Tesseract 的最新版本是4.x具有比较高的准确性和性能。 使用 Tesseract OCR 进行文本识别通常涉及以下步骤 安装 Tesseract OCR根据您的操作系统下载并安装 Tesseract OCR。对于 Windows 系统可以从 GitHub Release 页面下载安装包进行安装。对于 macOS 和 Linux 系统可以通过包管理器如 Homebrew 或 apt安装。 安装 pytesseractpytesseract 是一个 Python 模块用于与 Tesseract OCR 进行交互。您可以使用 pip 安装 pytesseract bashCopy code pip install pytesseract 使用 pytesseract 进行图像文本识别下面是一个简单的示例代码演示如何使用 pytesseract 对图像进行文本识别 from PIL import Image import pytesseract# 读取图像文件 image Image.open(example.png)# 使用 pytesseract 进行文本识别 text pytesseract.image_to_string(image)# 打印识别结果 print(text) Tesseract OCR 对于特定字体、大小和质量的图像效果可能会有所不同。在实际使用中我们需要调整图像预处理和 Tesseract 的参数来获得最佳的识别结果。 十二、模拟登录 要使用 Selenium 模拟登录网站并爬取需要登录才能访问的页面我们可以按照以下步骤进行 启动浏览器并打开登录页面。填写登录表单包括用户名和密码。点击登录按钮。等待登录完成。访问需要登录才能访问的页面提取数据或进行其他操作。 下面是一个示例代码演示如何使用 Selenium 模拟登录网站并爬取需要登录才能访问的页面 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys import time# 启动浏览器 driver webdriver.Chrome()# 打开登录页面 driver.get(https://example.com/login)# 填写用户名和密码 username_input driver.find_element(By.ID, username) password_input driver.find_element(By.ID, password)username_input.send_keys(your_username) password_input.send_keys(your_password)# 提交登录表单 password_input.send_keys(Keys.RETURN)# 等待登录完成这里假设登录成功后会跳转到首页 time.sleep(2)# 访问需要登录才能访问的页面 driver.get(https://example.com/protected_page)# 提取页面数据或进行其他操作 data_element driver.find_element(By.XPATH, //div[classdata]) data data_element.text print(Protected Page Data:, data)# 关闭浏览器 driver.quit() 请注意在实际使用中我们需要替换示例中的 https://example.com/login、your_username 和 your_password 为实际的登录页面 URL、用户名和密码。同时确保我们的行为符合网站的使用条款和规定以免触发反爬虫措施。 十三、跨页面操作 处理需要跨页面操作的情况通常需要在页面之间进行导航和交互。使用 Selenium 可以模拟用户在网页上的操作包括点击链接跳转到另一个页面。下面是一个示例代码演示如何在一个页面点击链接跳转到另一个页面进行数据提取 from selenium import webdriver from selenium.webdriver.common.by import By import time# 启动浏览器 driver webdriver.Chrome()# 打开第一个页面 driver.get(https://example.com/page1)# 点击页面上的链接 link_element driver.find_element(By.XPATH, //a[idlink-to-page2]) link_element.click()# 等待页面加载 time.sleep(2)# 在第二个页面提取数据 data_element driver.find_element(By.XPATH, //div[iddata-on-page2]) data data_element.textprint(Data on page 2:, data)# 关闭浏览器 driver.quit() 在这个示例中我们首先启动了 Chrome 浏览器并打开了第一个页面。然后我们找到了第一个页面上的链接元素并使用 click() 方法点击了该链接。随后我们等待了2秒钟以确保第二个页面加载完成。最后我们找到了第二个页面上的数据元素并提取了其文本内容。 需要注意的是实际情况可能更复杂具体取决于网站的结构和交互方式。在处理跨页面操作时确保等待页面加载完成并处理可能的异常情况是很重要的。 十四、异常处理 在爬取过程中可能会出现各种异常情况如超时、元素未找到等。为了确保爬虫的稳定性和可靠性需要对这些异常情况进行处理。下面是一个示例代码演示如何使用 try-except 语句来处理这些异常情况 from selenium import webdriver from selenium.common.exceptions import TimeoutException, NoSuchElementException from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC# 启动浏览器 driver webdriver.Chrome()try:# 设置页面加载超时时间为10秒driver.set_page_load_timeout(10)# 打开网页driver.get(https://example.com)# 显式等待10秒直到元素加载完成WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, //div[idcontent])))# 提取数据content_element driver.find_element(By.XPATH, //div[idcontent])content content_element.textprint(Content:, content)except TimeoutException:print(页面加载超时)except NoSuchElementException:print(元素未找到)finally:# 关闭浏览器driver.quit() 在这个示例中我们使用了 try-except 语句来捕获可能出现的 TimeoutException超时异常和 NoSuchElementException元素未找到异常。在 try 代码块中我们设置了页面加载超时时间为10秒并使用显式等待来等待页面元素加载完成。如果页面加载超时或元素未找到则会相应地捕获并处理异常。最后无论是否发生异常我们都会在 finally 代码块中关闭浏览器。 通过合理地处理异常情况可以使爬虫在遇到问题时能够优雅地处理并继续执行其他操作。 十五、数据存储 提取到的数据存储到文件、数据库或其他存储介质中是网页爬取的重要步骤之一。具体的存储方式取决于您的需求和项目的要求。以下是几种常见的数据存储方式示例 存储到文件例如 CSV 文件 import csvdata [{name: Alice, age: 25}, {name: Bob, age: 30}]with open(data.csv, modew, newline) as file:writer csv.DictWriter(file, fieldnames[name, age])writer.writeheader()for row in data:writer.writerow(row) 存储到数据库例如 SQLite import sqlite3data [{name: Alice, age: 25}, {name: Bob, age: 30}]conn sqlite3.connect(data.db) cursor conn.cursor()cursor.execute(CREATE TABLE IF NOT EXISTS users(id INTEGER PRIMARY KEY, name TEXT, age INTEGER))for row in data:cursor.execute(INSERT INTO users (name, age) VALUES (?, ?), (row[name], row[age]))conn.commit() conn.close() 存储到其他存储介质例如 MongoDB from pymongo import MongoClientdata [{name: Alice, age: 25}, {name: Bob, age: 30}]client MongoClient(mongodb://localhost:27017/) db client[mydatabase] collection db[users]for row in data:collection.insert_one(row)client.close() 这些示例展示了如何将提取到的数据存储到不同的存储介质中。您可以根据项目的需要选择适合的存储方式。 十六、反爬虫策略 反爬虫策略是网站为防止被爬虫程序恶意抓取数据而采取的一系列措施。常见的反爬虫策略包括 User-Agent检测网站会检查请求中的 User-Agent 字段如果发现是爬虫程序常用的 User-Agent则可能拒绝服务或返回特定响应。IP地址限制网站可能会限制同一IP地址的访问频率过高频率的访问会被视为异常行为。验证码网站可能会在某些操作前要求用户输入验证码以确认访问者是人类而不是爬虫程序。动态加载内容网站使用JavaScript等技术来动态加载内容使得只有通过真正执行页面脚本才能获取到完整内容。频率限制限制同一用户或IP地址在一定时间内的请求频率过高频率的请求会被拒绝。页面结构变化定期改变页面结构使得爬虫程序难以适应变化而失效。 应对这些反爬虫策略的方法包括 设置合理的User-Agent模拟浏览器行为避免使用常见的爬虫User-Agent。使用代理IP使用代理IP来隐藏真实IP地址避免被网站封禁。处理验证码使用验证码识别技术自动处理验证码。限制访问频率设置合理的访问间隔时间避免过高频率的访问。使用随机延迟在请求之间添加随机延迟模拟人类操作。动态解析页面使用动态解析技术获取动态加载的内容。定期监测网站变化定期检查网站结构的变化及时调整爬取策略。遵守robots.txt规范遵守网站的robots.txt文件中的规定不访问被禁止的页面。 综上所述应对反爬虫策略需要综合考虑网站的具体情况和采取合适的应对策略。 十七、性能优化 当涉及性能优化时代码中的优化通常是特定于应用程序和场景的。下面是一些常见的Python爬虫代码优化技巧示例 1减少不必要的等待时间避免使用固定的等待时间而是根据需要进行动态等待。示例代码 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as ECdriver webdriver.Chrome() driver.get(https://example.com)try:element WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, myElement))) finally:driver.quit() 2合理使用隐式等待在创建WebDriver实例时设置隐式等待时间而不是在每个操作中都设置等待时间。示例代码 from selenium import webdriverdriver webdriver.Chrome() driver.implicitly_wait(10) # 设置隐式等待时间为10秒driver.get(https://example.com) element driver.find_element(By.ID, myElement) 3使用多线程/异步处理使用**concurrent.futures**模块进行异步处理。示例代码 from concurrent.futures import ThreadPoolExecutor from selenium import webdriverdef scrape(url):driver webdriver.Chrome()driver.get(url)# 爬取逻辑driver.quit()urls [https://example.com/page1, https://example.com/page2, https://example.com/page3]with ThreadPoolExecutor(max_workers5) as executor:executor.map(scrape, urls) 4避免重复请求使用缓存来存储已经爬取过的数据。示例代码 import requests import hashlibcache {}def get_data(url):if url in cache:return cache[url]response requests.get(url)data response.textcache[url] datareturn dataurl https://example.com data get_data(url) 这些示例代码演示了一些常见的Python爬虫代码优化技巧但实际的优化策略应根据具体的爬虫应用程序和场景进行调整和优化。 十八、定时任务 要将爬虫任务设置为定时执行可以使用Python的**schedule库来实现。schedule库可以帮助我们在指定的时间间隔内定期运行任务。以下是一个简单的示例代码演示如何使用schedule**库来定时执行爬虫任务 import schedule import timedef crawl():# 在这里编写爬虫逻辑print(开始爬取数据...)# 每小时执行一次爬虫任务 schedule.every().hour.do(crawl)# 在这里可以设置其他定时任务如每天、每周等# 保持程序运行直到手动终止 while True:schedule.run_pending()time.sleep(1) 在这个示例中**crawl函数是我们的爬虫逻辑。使用schedule.every().hour.do(crawl)来设置每小时执行一次爬虫任务。您还可以使用其他schedule.every()**方法来设置其他的定时任务如每天、每周等。 请注意为了保持程序持续运行我们使用了一个**while True循环来不断检查是否有定时任务需要执行并使用time.sleep(1)**来让程序每秒钟检查一次。这样可以确保定时任务能够按照预期执行。 十九、 与其他库和工具的集成 将Selenium与其他库和工具集成可以实现更强大的功能比如使用BeautifulSoup解析页面内容、使用pandas处理数据等。以下是一个示例代码演示了如何将Selenium与BeautifulSoup和pandas集成 pythonCopy code from selenium import webdriver from bs4 import BeautifulSoup import pandas as pd# 启动浏览器 driver webdriver.Chrome()# 打开网页 driver.get(https://example.com)# 获取页面源码 html driver.page_source# 使用BeautifulSoup解析页面 soup BeautifulSoup(html, html.parser)# 提取需要的数据 data [] for item in soup.find_all(div, class_item):name item.find(h2).textprice item.find(span, class_price).textdata.append({name: name, price: price})# 将数据转换为DataFrame df pd.DataFrame(data)# 关闭浏览器 driver.quit()# 打印数据 print(df) 在这个示例中我们首先使用Selenium打开了一个网页并获取了页面的源码。然后我们使用BeautifulSoup解析了页面并提取了需要的数据。最后我们使用pandas将数据转换为DataFrame并进行打印输出。这样就实现了将Selenium与BeautifulSoup和pandas集成的功能。 好了今天的学习就到这里了第二十四天会带来几个案例将上面的知识点运用起来。敬请期待拜拜啦
http://www.zqtcl.cn/news/759021/

相关文章:

  • 西安网站开发的未来发展易企网络网站建设
  • 贵州做网站怎么推广vs2012 做网站教程
  • 完全菜鸟七天学会建网站网络营销的四大基础理论
  • 东莞网站优化案例网站职业技术培训学校
  • 银川网站建设公司电话公司在百度做网站找谁
  • 交换链接适用于哪些网站网络规划与设计的目的
  • 网站做标签寺院网站模板
  • 高端h5网站柳州建站
  • 百度商桥网站郑州有做网站的公司没
  • 做专业网站济南品牌网站建设低价
  • 网站制作客户寻找数据中台厂商
  • 免费找图片素材的网站西安企业seo
  • 网站建设 名词解释国内网站建设建设
  • 文山州建设局网站域名查询seo
  • php网站模块修改太原小店区最新消息今天
  • 苏州网站优化公司seo服务合同
  • vip影视网站怎么做的辽宁建设厅网站什么时候换的
  • 搭建个网站网站维护合同模板
  • 优盖网logo在线设计南通做网站优化的公司
  • 做百度糯米网站的团队新媒体营销推广公司
  • 个人做网站的时代已经过去大连男科医院排名表
  • 天津餐饮网站建设贵港做网站化司
  • 昆山哪家做网站好猪八戒网站建设
  • 网站的静态资源服务器怎么做河北网站备案
  • php儿童摄影网站源码东莞做网站的公司哪家最好
  • 金融投资网站建设wordpress九宫格主题
  • 玉田县网站建设手机网站建设西安
  • 高质量外链网站请大学生做网站
  • 2021能看的网站不要app贴吧网站以前在百度能搜索不到了
  • 个人做网站时不要做什么样的网站百度网站排名全掉