我需要再文件夹中创建一个名为failed_urls的本地文件保存失败的url吗
时间: 2024-04-17 11:26:49 浏览: 93
Python 中urls.py:URL dispatcher(路由配置文件)详解
是的,如果您希望将失败的URL保存到一个名为`failed_urls.txt`的文件中,可以进行如下修改:
```python
from concurrent.futures import ThreadPoolExecutor
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# 打开URL文件
with open('url.txt', 'r') as file:
urls = file.read().splitlines()
# 定义特定的域名
specific_domains = ['4qo4li.com:9516/register?i_code=']
# 创建ChromeOptions对象
chrome_options = Options()
chrome_options.add_argument("--incognito") # 启用无痕模式
def process_url(url):
# 创建浏览器实例
driver = webdriver.Chrome(options=chrome_options) # 使用Chrome浏览器,需要下载对应的驱动并设置到环境变量中
# 构建完整的URL
full_url = 'http://' + url + '/a/index.php/54545'
# 打开浏览器并访问URL
driver.get(full_url)
# 等待页面跳转完成
driver.implicitly_wait(10) # 设置隐式等待时间,单位为秒
# 获取当前页面的URL
current_url = driver.current_url
# 判断当前页面的URL是否包含特定域名
if any(domain in current_url for domain in specific_domains):
# 写入1.txt文本文件
with open('1.txt', 'a') as file:
file.write(url + '\n')
else:
# 写入failed_urls.txt文本文件
with open('failed_urls.txt', 'a') as file:
file.write(url + '\n')
# 关闭浏览器
driver.quit()
# 创建线程池
with ThreadPoolExecutor(max_workers=10) as executor:
# 提交任务给线程池
futures = [executor.submit(process_url, url) for url in urls]
# 等待所有任务完成
for future in futures:
future.result()
```
在代码中,我添加了一个名为`failed_urls.txt`的文件,并在处理失败的URL时将其写入该文件中。
希望这个修改能够满足您的需求。如果还有其他问题,请随时提问。
阅读全文