python爬虫学习(搜索)

python实现打开网站并进行搜索操作

打开B站搜索python

python 复制代码
from selenium import webdriver
from selenium.webdriver.edge.options import Options
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.edge.service import Service
import os

# ========== 1. 修复核心错误 ==========
# 错误1:路径含多余空格("AppLication" 拼写错误+路径空格)
EDGE_BROWSER_PATH = r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
# 错误2:必须指定 EdgeDriver 路径(之前的环境问题)
EDGEDRIVER_PATH = r"C:\Users\叶梓聪\AppData\Local\Programs\Python\Python37\Scripts\msedgedriver.exe"  # 替换为你的驱动路径

# ========== 2. 配置 Edge 选项 ==========
edge_options = Options()
edge_options.binary_location = EDGE_BROWSER_PATH  # 修复路径+拼写错误
# 关闭日志干扰
edge_options.add_experimental_option('excludeSwitches', ['enable-logging'])
# 禁用自动化提示
edge_options.add_argument('--disable-blink-features=AutomationControlled')

# ========== 3. 配置驱动服务 ==========
# 临时加入环境变量(避免 PATH 问题)
os.environ["PATH"] += os.pathsep + os.path.dirname(EDGEDRIVER_PATH)
service = Service(executable_path=EDGEDRIVER_PATH)

# ========== 4. 启动浏览器 ==========
driver = webdriver.Edge(service=service, options=edge_options)
driver.maximize_window()  # 最大化窗口,避免元素被遮挡
driver.implicitly_wait(10)  # 隐式等待10秒,确保页面加载完成

# ========== 5. 修复元素定位+方法名错误 ==========
driver.get('http://www.bilibili.com')
# 错误3:find_eLement 拼写错误(L大写)→ 正确:find_element
# 错误4:TAG_NAME 定位input会找到多个元素,改用B站搜索框专属定位
search_box = driver.find_element(By.ID, "nav-searchform")  # B站搜索框父元素
input_box = search_box.find_element(By.TAG_NAME, "input")  # 精准定位搜索输入框
# 错误5:清空原有内容(避免残留)+ 输入关键词 + 回车
input_box.clear()
input_box.send_keys("Python" + Keys.RETURN)

# 等待用户输入,保持浏览器打开
input('按回车键关闭浏览器...')
driver.quit()  # 最后关闭浏览器

爬取百度搜图图片

python 复制代码
'''爬取图片(find_element)2.0'''
import requests
import os
import time
if not os.path.exists("./命运二"):
   os.mkdir("./命运二")
#批量化下载网页资源
from selenium import webdriver
from selenium.webdriver.edge.options import Options
from selenium.webdriver.common.by import By
edge_options = Options()
edge_options.binary_location =r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
driver=webdriver.Edge(options=edge_options)
driver.get('https://image.baidu.com/search/index?tn=baiduimage&ie=utf-8&word=命运二')#执行JavaScript滚动操作
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(5)
img_list=driver.find_elements(By.XPATH, value="//img[@class='img_7rRSL']")# print(img_list)
i=1
for img in img_list:
#获取图片的src属性
   img_url = img.get_attribute("src")
   img_data = requests.get(img_url)
#保存图片到文件
   with open(f"./命运二/{i}.png",'wb') as f:
      f.write(img_data.content)
   i +=1

爬取购物网站好评,并变成文档

python 复制代码
from selenium import webdriver
from selenium.webdriver.edge.options import Options
from selenium.webdriver.common.by import By
import time
import os

# ========== 核心修复1:路径错误 + 驱动配置 ==========
# 错误1:路径多余空格 + AppLication拼写错误(L大写)
EDGE_BROWSER_PATH = r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
# 错误2:必须指定EdgeDriver路径(解决找不到驱动问题)
EDGEDRIVER_PATH = r"C:\Users\叶梓聪\AppData\Local\Programs\Python\Python37\msedgedriver.exe"

# ========== 核心修复2:配置Edge浏览器并启动 ==========
edge_options = Options()
edge_options.binary_location = EDGE_BROWSER_PATH  # 正确的浏览器路径
edge_options.add_experimental_option('excludeSwitches', ['enable-logging'])  # 关闭日志干扰
# 临时将驱动路径加入环境变量(避免PATH问题)
os.environ["PATH"] = os.path.dirname(EDGEDRIVER_PATH) + os.pathsep + os.environ["PATH"]

# 启动浏览器(必须先启动driver,才能用driver定位元素)
driver = webdriver.Edge(options=edge_options)
driver.maximize_window()
driver.implicitly_wait(10)  # 元素定位超时时间(防页面加载慢)
# 补充:打开目标网页(你原代码缺失,需替换为实际爬取评论的网址)
driver.get("https://review.suning.com/cluster_cmmdty_review/cluster-38249278-000000012389328846-0000000000-1-good.htm?originalCmmdtyType=general&safp=d488778a.10004.loverRight.166")  # 替换为你要爬取评论的页面URL

# ========== 核心修复3:文件操作(用with更安全) ==========
# 错误3:直接open文件未做容错,改用with上下文管理器(自动关闭)
with open('好评1.txt', 'w', encoding='utf8') as hp_file:
    # ========== 核心修复4:函数定义(传参+拼写+语法) ==========
    def get_py_content(driver, file):  # 错误4:传参缺失driver;fiLe拼写错误→file
        # 错误5:pj_elments_content拼写错误→pj_elements_content;多余空格删除
        # 错误6:driver未传参,需作为参数传入
        pj_elements_content = driver.find_elements(by=By.CLASS_NAME, value='body-content')
        # 错误7:elment拼写错误→element;file.write而非fiLe
        for element in pj_elements_content:
            if element.text:  # 容错:过滤空评论
                file.write(element.text.strip() + '\n')  # strip()去首尾空格

    # ========== 核心修复5:调用函数(传入driver和文件对象) ==========
    get_py_content(driver, hp_file)  # 错误8:原代码未传driver

    # ========== 核心修复6:下一页逻辑(语法+拼写+判断) ==========
    # 错误9:next_elements拼写错误→next_elements;多余空格删除
    # 错误10:XPath中class值末尾多余空格,需和网页一致(建议简化)
    next_elements = driver.find_elements(by=By.XPATH, value='//a[@class="next rv-maidian"]')
    print(f"找到下一页按钮数量:{len(next_elements)}")

    # 错误11:while判断逻辑优化(判断长度而非空列表)
    while len(next_elements) > 0:
        next_element = next_elements[0]
        time.sleep(1)  # 错误12:sLeep拼写错误→sleep
        next_element.click()  # 点击下一页
        time.sleep(2)  # 等待页面加载完成(比1秒更稳妥)
        get_py_content(driver, hp_file)  # 重新获取当前页评论
        # 错误13:driver,find_elements多余逗号→driver.find_elements
        # 错误14:next_eLements拼写错误→next_elements;多余空格删除
        next_elements = driver.find_elements(by=By.XPATH, value='//a[@class="next rv-maidian"]')

# 错误15:原代码hp_file.close()在with外无意义(with已自动关闭)
print("✅ 评论爬取完成,文件已保存为 好评1.txt")
driver.quit()  # 关闭浏览器
相关推荐
顾林海1 天前
Agent入门阶段-编程基础-Python:流程控制
python·agent·ai编程
呱呱复呱呱1 天前
Django CBV 源码解读:一个请求是怎么找到你的 get() 方法的
python·django
Caco_D1 天前
一行代码抓遍全网 20 个热榜!Aneiang.Pa 4.0 发布 — 极简 .NET 爬虫库
爬虫·.net
曲幽1 天前
刚部署的 LibreTranslate 频频翻车?我掏出了 20 年前的 StarDict 词典,用 FastAPI 搭了个本地词典翻译 API
python·fastapi·web·translate·goldendict·libretranslate·stardict·pystardict
荣码1 天前
用Streamlit给AI应用套个界面,10行代码出Web页面
java·python
兵慌码乱2 天前
基于Python+PyQt5+SQLite的药房管理系统实现:事务一致性与界面解耦全流程解析
python·sqlite·信号与槽·pyqt5·数据库设计·桌面应用开发·事务处理
金銀銅鐵2 天前
[Python] 体验用欧几里得算法计算最大公约数的过程
python·数学
FreakStudio2 天前
W55MH32L-EVB 上手测评:硬件 TCP/IP 加持的以太网单片机,MicroPython 零门槛开发
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy·电子计算机
用户0332126663672 天前
使用 Python 从零创建 Word 文档
python
Csvn2 天前
Python 两大经典坑点 —— 可变默认参数 & 闭包延迟绑定
后端·python