python爬取网页源代码,提取关键词信息

python 复制代码
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import time
import csv
from tqdm import tqdm

# 设置Chrome选项,使其在无头模式下运行
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument('--no-sandbox')
# 禁止加载图片
prefs = {"profile.managed_default_content_settings.images": 2}
chrome_options.add_experimental_option("prefs", prefs)

# CSV文件名
csv_file = 'lists_3.csv'
# 指定ChromeDriver的路径
driver_path = '/usr/bin/chromedriver'

# 创建一个Service对象
service = Service(driver_path)

# 创建WebDriver实例
driver = webdriver.Chrome(service=service, options=chrome_options)

# 从CSV文件读取URL列表
urls = []
with open(csv_file, mode='r', encoding='utf-8') as file:
    csv_reader = csv.reader(file)
    for row in csv_reader:
        if row:  # 确保行不是空的
            urls.append(row[0])  # 假设URL在每行的第一个元素

# 输出文件
output_file = 'code.txt'

# 使用'a'模式打开输出文件
with open(output_file, 'a', encoding='utf-8') as file:
    for url in tqdm(urls, desc="Processing URLs"):
        try:
            # 访问URL
            driver.get(url)
            
            # 显式等待页面标题出现
            WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.TAG_NAME, "title")))
            
            # 获取页面标题
            title = driver.title
            
            # 尝试获取<title>,并写入文件
            file.write(f"{url}\n")
            file.write(f"Title: {title}\n")
            
            # 尝试获取<meta name="keywords">
            try:
                WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.NAME, "keywords")))
                keywords = driver.find_element(By.NAME, 'keywords').get_attribute('content')
                file.write(f"Keywords: {keywords}\n")
            except Exception:
                file.write("Keywords: Not Found\n")
            
            # 尝试获取<meta name="description">
            try:
                WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.NAME, "description")))
                description = driver.find_element(By.NAME, 'description').get_attribute('content')
                file.write(f"Description: {description}\n")
            except Exception:
                file.write("Description: Not Found\n")
            
            file.write("\n")  # 分隔不同URL的元数据
            file.flush()  # 强制刷新文件缓冲
            
        except Exception as e:
            print(f"An error occurred while processing {url}: {str(e)}")
            continue  # 跳过错误URL,继续处理下一个

# 关闭WebDriver实例
driver.quit()

print("All data has been written to the output file.")
相关推荐
你们瞎搞18 小时前
arcgis矢量数据转为标准geojson格式
python·arcgis·json·地理空间数据
郝学胜-神的一滴18 小时前
Python中的鸭子类型:理解动态类型的力量
开发语言·python·程序人生·软件工程
2401_8414956418 小时前
【计算机视觉】霍夫变换函数的参数调整
人工智能·python·算法·计算机视觉·霍夫变换·直线检测·调整策略
猫头虎18 小时前
如何解决 pip install -r requirements.txt extras 语法 ‘package[extra’ 缺少 ‘]’ 解析失败问题
开发语言·python·开源·beautifulsoup·virtualenv·pandas·pip
zhangfeng113318 小时前
R语言 读取tsv的三种方法 ,带有注释的tsv文件
开发语言·r语言·生物信息
eqwaak018 小时前
动态图表导出与视频生成:精通Matplotlib Animation与FFmpeg
开发语言·python·ffmpeg·音视频·matplotlib
刘新明198918 小时前
Frida辅助分析OLLVM虚假控制流程(下)
java·开发语言·前端
第二只羽毛19 小时前
重载和继承的实践
java·开发语言
AndrewHZ19 小时前
【图像处理基石】GIS图像处理入门:4个核心算法与Python实现(附完整代码)
图像处理·python·算法·计算机视觉·gis·cv·地理信息系统
光军oi19 小时前
全栈开发杂谈————JAVA微服务全套技术栈详解
java·开发语言·微服务