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()  # 关闭浏览器
相关推荐
zuoyou-HPU5 小时前
ChatGLM4 的 tokenizer 配置文件解析
python·大模型·glm
keineahnung23455 小时前
從 SymBool 到 SymFloat:PyTorch user magic methods 如何支持符號形狀運算?
人工智能·pytorch·python·深度学习
傅里叶的耶5 小时前
C++ Primer Plus(第6版):第二章 开始学习C++
开发语言·c++·学习
醇氧5 小时前
springAI学习 (二) 模型
java·学习·spring·ai·ai编程
找方案5 小时前
hello-agents 学习笔记:从概念到落地,初识智能体的奇妙世界
人工智能·笔记·学习·大模型
●VON5 小时前
小V健身助手开发手记(五):基于 RDB 的历史记录系统设计与实现
学习·openharmony·开源鸿蒙·von
ones~5 小时前
软件体系架构(三)
学习·架构·软件工程
Chloeis Syntax5 小时前
MySQL初阶学习日记(6)--- 索引
数据库·学习·mysql
0和1的舞者5 小时前
《MyBatis 从入门到上手:超全基础操作 + XML 配置指南》
数据库·spring boot·学习·spring·mybatis·框架·开发
_妲己5 小时前
SD的细分功能包括重绘,图像处理、放大等扩散模型应用
人工智能·python·深度学习·机器学习·stable diffusion·comfyui·ai工作流