You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
4.4 KiB
4.4 KiB
ip代理.py
这段代码是一个Python脚本,它使用Selenium WebDriver和BeautifulSoup库来自动化爬取网页上的免费代理IP地址,并将爬取到的IP地址及其端口保存到JSON和TXT文件中。以下是该脚本实现的主要步骤和方法:
- 设置无头模式:使用
Options
类设置Edge浏览器以无头模式运行,这样浏览器就不会显示图形界面。 - 实例化WebDriver:创建一个Edge浏览器实例,用于后续的网页操作。
- 初始化变量:初始化了用于存储IP地址、端口和代理的列表和字典。
- 循环爬取:使用
for
循环和range
函数遍历不同的子页面(这里假设是分页),并对每个页面进行操作。 - 获取页面源代码:使用
driver.page_source
获取当前页面的HTML源代码。 - 解析HTML:使用BeautifulSoup解析HTML内容,以便提取所需的数据。
- 提取IP和端口:通过CSS选择器定位到包含IP和端口的
td
标签,并提取文本。 - 添加到列表和字典:将提取到的IP和端口分别添加到列表和字典中。
- 打印进度:打印出当前加载的代理数量,以显示进度。
- 构建代理列表:遍历IP列表,为每个IP构建一个包含HTTP代理的字典,并添加到代理列表中。
- 写入JSON文件:使用
json.dump
将代理列表以格式化的JSON格式写入文件。 - 写入TXT文件:打开一个文本文件,将每个代理以字符串形式写入,并在每个代理后添加逗号和换行符。
- 关闭WebDriver:使用
driver.quit()
关闭浏览器实例,释放资源。 - 延时:
time.sleep(999)
会使程序暂停999秒,但由于driver.quit()
已经关闭了浏览器,所以这一行实际上不会执行。
spiders.py
这段代码是一个使用Python编写的自动化脚本,它使用Selenium WebDriver和BeautifulSoup库来自动化Web浏览器操作,目的是从豆瓣电影网站爬取特定条件(地区和年代)下的电影链接,并将这些链接保存到Excel文件中。以下是该脚本实现的主要步骤:
- 初始化数据库连接 (
create_engine
): 使用 SQLAlchemy 创建数据库连接,这里连接到一个名为dbmovie
的MySQL数据库。 - spider 类: 定义了一个爬虫对象,包含多个方法用于爬取和处理电影数据。
- 初始化方法
__init__
: 初始化时,读取一个Excel文件来获取要爬取的电影网站URL列表,并设置请求头和代理。 - 请求头
request_headers
: 生成随机的User-Agent来模拟浏览器请求,避免被网站识别为爬虫。 - 初始化数据库
init
: 检查是否存在用于存储临时数据的CSV文件和记录爬取进度的文本文件,如果不存在则创建它们。同时尝试创建一个数据库表movie
来存储爬取的数据。 - 获取和设置页面索引
get_page
和set_page
: 用于记录爬虫当前爬取到的页面索引,以便下次可以从上次停止的地方继续爬取。 - 主爬虫方法
spiderMain
: 这是执行爬取的核心方法。它循环遍历URL列表,对每个URL发送HTTP请求,并解析返回的页面内容。 - 解析页面内容: 使用
lxml.etree
解析HTML文档,提取电影的导演、评分、名称、演员、封面、详情链接、年份、类型、国家、语言、上映时间、片长、短评个数、星级占比、简介和短评等信息。 - 保存到CSV
save_to_csv
: 将爬取的数据追加到CSV文件中。 - 保存到SQL数据库
save_to_sql
: 将CSV文件中的数据导入到数据库中。 - 清除CSV文件
clear_csv
: 删除CSV文件中的缺失值和重复值,然后保存到一个新的CSV文件中,并导入到数据库。 - 删除CSV文件
delete_csv_file
: 删除用于临时存储爬取数据的CSV文件。 - 代理池优化
Optimize
: 一个导入的模块,用于管理和优化IP代理池,但具体的实现细节没有在代码中给出。 - 异常处理: 在
spiderMain
方法中,使用try-except
块来捕获和处理可能出现的异常,例如网络错误或解析错误。 - 重试机制: 如果在爬取过程中遇到错误,程序会重试,最多重试
max_retries
次。 - *main* 块: 如果这个脚本作为主程序运行,它将创建一个
spider
对象,初始化数据库,并开始爬取过程。