为了visa面签预约学习python爬虫-DAY1

文章讲述了作者计划通过Python和网络爬虫技术自动预约CGI签证,介绍了如何使用Selenium处理复杂登录流程,以及如何通过requests库发送请求和设置User-Agent,同时提到了在遇到Cloudflare安全规则时的应对策略和cookies的作用。
该文章已生成可运行项目,
1.目的:

持续一个多月在CGI进行面签的预约都是提示没有可用预约时间,又不知道到底CGI多久会放出预约的名额,网上找人代预约感觉又贵又各种不靠谱,打算自己搞个定时任务来抓数据,顺便学一下python和爬虫。最好可以通过这个成功预约到面签,再不济也希望通过自动任务找出CGI放号的踪迹。

关于这个问题我问过GPT,下面也附上我和GPT的问答纪录

我:

我想写一个爬虫或者机器人之类的,可以每天定点定时帮我登录预约签证的网站,请问用什么技术实现,具体怎么实现呢

GPT:

创建一个能够定时自动登录网站并预约签证的程序,通常需要使用到网络爬虫(Web Crawling)和自动化脚本(Automation Scripting)技术。下面是一些常见的技术和步骤,可以帮助你实现这样的程序:

### 1. 选择编程语言和工具
- **Python**:Python 是进行网络爬虫和自动化任务的首选语言,因为它有着丰富的库支持。
- **库和工具**:
  - **Requests**:用于发送HTTP请求。
  - **Beautiful Soup** 或 **lxml**:用于解析HTML页面,提取所需数据。
  - **Selenium**:一个自动化测试工具,可以模拟真实用户的浏览器行为,包括登录、点击按钮等操作。

### 2. 分析目标网站
- 在编写爬虫之前,需要分析目标网站的登录和预约流程。这可能包括查看网页的HTML源码,了解表单数据是如何提交的,以及哪些HTTP请求是必要的。
- 注意检查网站是否有反爬虫措施,比如验证码、登录频率限制等。

### 3. 实现自动登录和预约
- **使用Requests和Beautiful Soup**:如果网站的登录和预约流程比较简单,不涉及JavaScript动态加载内容,可以使用Requests库发送登录请求,然后用Beautiful Soup解析响应,模拟用户填写预约信息并提交。
- **使用Selenium**:对于复杂的、需要与JavaScript交互的网站,Selenium 能够模拟真实的浏览器环境,执行登录和预约的动作就像真正的用户一样。Selenium 可以模拟点击、输入文本、滚动页面等操作。

### 4. 设置定时任务
- **Linux**:使用cron工作表来安排脚本定时运行。
- **Windows**:使用任务计划程序来安排脚本执行。
- **Python**:使用`schedule`库来在Python脚本内部设置定时任务。

### 注意事项
- **遵守法律法规和网站使用协议**:自动化访问和使用网络服务可能会违反服务条款或相关法律,务必确保你的行为是合法的,并尊重网站的反爬虫政策。
- **避免给网站带来负担**:设置合理的请求间隔,避免过度请求导致服务器负载过重。

### 实现示例(伪代码)
这里给出一个使用Python和Selenium进行自动登录的简化示例:

```python
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

# 初始化浏览器驱动
driver = webdriver.Chrome()

# 打开登录页面
driver.get("登录页面的URL")

# 找到用户名和密码输入框,输入信息
username_box = driver.find_element_by_id("用户名输入框的ID")
username_box.send_keys("你的用户名")
password_box = driver.find_element_by_id("密码输入框的ID")
password_box.send_keys("你的密码")

本文章已经生成可运行项目
### Python PyVISA库使用指南 #### 安装PyVISA及其依赖项 为了能够利用PyVISA来操作测量设备,需先确保已安装Python环境。之后可通过`pip`工具轻松完成PyVISA及相关组件的安装: ```bash pip install pyvisa pip install pyvisa-py ``` 上述命令分别用于安装PyVISA核心包以及pyvisa-py作为替代性的纯Python VISA实现[^1]。 #### 配置与初始化 一旦安装完毕,便可以在程序中导入并配置PyVISA资源管理器实例。这一步骤对于后续连接至具体硬件至关重要: ```python import pyvisa rm = pyvisa.ResourceManager() print(rm.list_resources()) ``` 此段代码创建了一个ResourceManager对象,并打印当前计算机可访问的所有仪器列表[^3]。 #### 控制外部设备 假设目标是向地址为`GPIB0::22::INSTR`的特定仪器发送指令,则可以按照如下方式编写交互逻辑: ```python inst = rm.open_resource('GPIB0::22::INSTR') inst.write('*IDN?') # 发送查询身份识别字符串命令给仪器 response = inst.read() # 获取来自仪器的回答 print(response.strip()) # 输出不带多余空白符的结果 ``` 这段简单的例子展示了如何打开指定路径下的资源、执行写入操作并向该装置请求反馈信息[^4]。 #### 进阶应用案例 除了基本读/写功能外,PyVISA还支持更复杂的场景,比如批量处理多条命令或设置超时参数等高级特性。下面是一个稍微复杂一点的应用示范: ```python from time import sleep with rm.open_resource('USB0::0x1AB1::0x04CE::DS8A23456789::INSTR', open_timeout=5000) as scope: scope.clear() # 清除任何先前存在的错误队列 for i in range(5): scope.write(f':MEASure:FREQuency CHANnel{i+1}') freq = float(scope.query(':FETCH?')) print(f'Channel {i + 1} frequency is {freq:.2f} Hz') if not (1e3 <= freq <= 1e6): # 如果频率不在合理范围内则中断测试 break sleep(1) # 等待一秒再继续下一个通道 ``` 这里采用上下文管理器(`with`)语法简化了资源关闭过程;同时加入了循环结构和条件判断语句使整个流程更加灵活可控。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值