转义符号启示

本文介绍了在Ext的Store中通过URL向后台传递特殊字符参数时遇到的问题及解决方案。作者发现部分字符如'#'在传输过程中被误解析,通过将'#'字符转义为'%23'成功解决了该问题。
昨天,不知为什么,在ext的store里用url向后台传递参数时,本来传的是[color=red]281##5##>##3;; [/color]但不知为什么当在后台接收到时是[color=red]281#5>3;;[/color]了,
当传[color=red]281##5##>##3;;281##5##<##100;; [/color]时接收到的是
[color=red]281#5>3;;2815<100;;[/color],经过思考可能需要转义,今天一试果然如此,终于成功了,就是把里面所有[color=red]#[/color]号都用[color=red]%23[/color]转义即可。

下面是我查资料时看见的,有些忘了网址,希望给大家带来方便
1
http://huayongsheng.iteye.com/blog/443678 url转义字符原理

2
常见的URl转义字符和特殊符号的十六进制值

在网页浏览器中的地址栏中经常会看到一些乱码,是我们所看不懂的,那是我们在输入要搜索的内容后,经常搜索引擎后台处理后的显示效果,下面我就列举几个常见的URl转义字符。
特殊符号 十六进制值

+ 转义符为 %2B

空格 转义符为 + 或 %20

/ 转义符为 %2F

? 转义符为 %3F

% 转义符为 %25

# 转义符为 %23

& 转义符为 %26

= 转义符为 %3D
from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from webdriver_manager.chrome import ChromeDriverManager import time import pandas as pd import re import random def setup_driver(): chrome_options = Options() chrome_options.add_argument('--disable-blink-features=AutomationControlled') chrome_options.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36') # 数学表达式计算滚动间隔 wait_time = random.uniform(1.5, 3.5) # 动态滚动间隔[^2] service = Service(ChromeDriverManager().install()) driver = webdriver.Chrome(service=service, options=chrome_options) return driver def clean_likes(likes_str): """清洗点赞数""" if '万' in likes_str: return float(re.sub(r'[^\d.]', '', likes_str)) * 10000 return int(re.sub(r'[^\d]', '', likes_str)) def get_xhs_comments(url, max_scroll=10): driver = setup_driver() try: driver.get(url) time.sleep(5) comments = [] last_height = driver.execute_script("return document.documentElement.scrollHeight") # 动态计算滚动高度(Python代码) import random def calculate_scroll(scrollHeight): # 公式实现:Δh = H/2 × (1+ε), ε~U(0,1) delta_h = (scrollHeight / 2) * (1 + random.random()) # [^1] # 生成JavaScript滚动指令(带LaTeX公式注释) js_code = f""" // 公式:$\\Delta h = \\frac{{H}}{{2}} \\times (1+\\epsilon)$ window.scrollTo({{ top: {delta_h}, behavior: 'smooth' }}); """ return js_code comment_blocks = WebDriverWait(driver, 15).until( EC.presence_of_all_elements_located((By.CSS_SELECTOR, '.comment-item')) ) for block in comment_blocks: try: comment_data = { 'user': block.find_element(By.CSS_SELECTOR, '.nickname').text, 'content': block.find_element(By.CSS_SELECTOR, '.content').text, 'likes': clean_likes(block.find_element(By.CSS_SELECTOR, '.like-count').text), 'time': pd.to_datetime(block.find_element(By.CSS_SELECTOR, '.time').text, errors='coerce') } if comment_data not in comments: comments.append(comment_data) except Exception as e: print(f"解析错误: {str(e)}") new_height = driver.execute_script("return document.documentElement.scrollHeight") if new_height == last_height: break last_height = new_height df = pd.DataFrame(comments) # 数据清洗 df = df.drop_duplicates(subset=['content']) df.to_csv('xhs_comments.csv', index=False, encoding='utf-8-sig') return df finally: driver.quit() # 使用示例 if __name__ == "__main__": url = "https://www.xiaohongshu.com/explore/6809b30b000000001c03375f" df = get_xhs_comments(url, max_scroll=15) print(f"成功获取{len(df)}条评论") 这段代码发生了以下错误,请帮我改正 Cell In[5], line 75 break ^ SyntaxError: 'break' outside loop
05-29
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值