chrome extensions 开发之 page_action

page_action 和 browser_action 

不同之处在于 browser_action 一直显示在右上角 toolbar , page_action可以控制显示、隐藏(置灰)

"page_action": {  
    	"default_icon": "image/icon.png" ,
    	"default_title": "default title",
    	"default_popup": "popup.html" 
  	}, 
 "background": {
      	"page": "backgroud.html",
      	"persistent": false
    },

page_action 中的属性, default_popup 如果不写的话 , 

pageAction hide状态,点击icon按钮,显示界面如下:

“查看弹出内容”置灰, 不可点击(如果配置了default_popup以后 popup.html仍然不显示)


 当pageAction show的话,显示界面如下:

如果不配置default_popup, , 按钮不可点 , 配置default_popup,可以显示


还需要注意一个问题

{  
	"manifest_version":2,

  	"name": "coffee",
  	"version": "1.0",  
  	"description": "page_action用法",  
	"icons":{ 
		"128": "image/icon.png"
	},
  	"page_action": {  
    	"default_icon": "image/icon.png" ,
    	"default_title": "default title",
    	"default_popup": "popup.html" 
  	}, 
  	"background": {
      	"page": "backgroud.html",
      	"persistent": false
    },
    "permissions": [     
     	"declarativeContent", "tabs", "http://*/*", "https://*/*"
    ]   
}

background.html 不可以用background.js代替

<html>
<head>
<script src="js/background.js"></script>
</head>
<body>
<canvas id="canvas" width="19" height="19"></canvas>
</body>
</html>

chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
     if(tab.url.indexOf ("taobao") > 0){
         chrome.pageAction.show(tabId);
     }else{
         chrome.pageAction.hide(tabId);
     }
});
如果page_action配置 background.js 则程序运行的时候回报错

Lazy require of extension.binding did not set the binding field





  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
from selenium import webdriver from selenium.webdriver.chrome.options import Options from bs4 import BeautifulSoup import time # 目标网站的 URL url = 'http://example.com/rank/list' # Chrome 浏览器配置 chrome_options = Options() chrome_options.add_argument('--disable-extensions') chrome_options.add_argument('--disable-gpu') chrome_options.add_argument('--no-sandbox') chrome_options.add_argument('--headless') chrome_options.add_argument('--disable-dev-shm-usage') # 启动 Chrome 浏览器 browser = webdriver.Chrome(options=chrome_options) # 发起第一页的请求并解析 HTML 标签 browser.get(url) time.sleep(3) # 等待 3 秒钟,等待 AJAX 加载完成 soup = BeautifulSoup(browser.page_source, 'html.parser') total_pages = soup.select('.ant-pagination-item:not(.ant-pagination-next):not(.ant-pagination-prev)')[-1]['title'] current_page = soup.select_one('.ant-pagination-item-active').text rank_list = parse_page(soup) # 发起所有页码的请求,并将结果存入列表中 for page in range(2, int(total_pages) + 1): if str(page) != current_page: # 模拟在浏览器中翻页操作 browser.execute_script(f'window.antDesignPro.current.delete("/rank/list?page={int(current_page)}")') # 删除当前页的数据 browser.execute_script(f'window.antDesignPro.current.jump("/rank/list?page={page}")') # 跳转到需要打开的页码 time.sleep(3) # 等待 3 秒钟,等待 AJAX 加载完成 soup = BeautifulSoup(browser.page_source, 'html.parser') page_data = parse_page(soup) rank_list += page_data current_page = page # 将所有分页数据合并成一个完整的 DataFrame 对象 all_data = merge_data(rank_list) # 关闭浏览器窗口 browser.quit() # 打印输出结果 print(all_data),注意:目标网站采用了 AJAX 或者 JavaScript 技术来进行分页加载数据,因此翻页时并没有刷新整个页面,也无法从html文本获得第一页以后的排名帮我修改代码,要求用到request和beautifulsoup等库,
最新发布
06-10
好的,以下是修改后的代码,使用了 requests 和 BeautifulSoup 库来发送请求和解析 HTML 标签: ```python import requests from bs4 import BeautifulSoup import pandas as pd import time def get_rank_list(url): # 发起第一页的请求并解析 HTML 标签 res = requests.get(url) soup = BeautifulSoup(res.text, 'html.parser') total_pages = soup.select('.ant-pagination-item:not(.ant-pagination-next):not(.ant-pagination-prev)')[-1]['title'] current_page = soup.select_one('.ant-pagination-item-active').text rank_list = parse_page(soup) # 发起所有页码的请求,并将结果存入列表中 for page in range(2, int(total_pages) + 1): if str(page) != current_page: # 模拟在浏览器中翻页操作 headers = { 'Referer': url, 'X-Requested-With': 'XMLHttpRequest' } res = requests.delete(url, headers=headers, params={'page': int(current_page)}) # 删除当前页的数据 res = requests.get(url, headers=headers, params={'page': page}) # 跳转到需要打开的页码 soup = BeautifulSoup(res.text, 'html.parser') page_data = parse_page(soup) rank_list += page_data current_page = page # 等待 3 秒钟,等待 AJAX 加载完成 time.sleep(3) # 将所有分页数据合并成一个完整的 DataFrame 对象 all_data = merge_data(rank_list) return all_data def parse_page(soup): rank_list = [] for tr in soup.select('tbody tr'): rank = tr.select_one('.rank').text.strip() # 排名 name = tr.select_one('.name').text.strip() # 名称 score = tr.select_one('.score').text.strip() # 得分 rank_list.append([rank, name, score]) return rank_list def merge_data(rank_list): df = pd.DataFrame(rank_list, columns=['rank', 'name', 'score']) return df if __name__ == '__main__': url = 'http://example.com/rank/list' all_data = get_rank_list(url) print(all_data) ``` 注意:目标网站采用了 AJAX 或者 JavaScript 技术来进行分页加载数据,因此需要在请求头中添加 `X-Requested-With` 和 `Referer` 参数,以模拟浏览器发送请求。此外,还需要等待 AJAX 加载完成后再解析 HTML 标签,可以使用 `time.sleep()` 函数来实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值