tb是要求先登录才能搜索的
而登录又有反爬的措施
# -*- coding: utf-8 -*-
import os
import json
import requests
def read_file():
"""读取书签文件内容"""
# 书签路径
google_fav_file_path = 'C:/Users/sheng/AppData/Local/Google/Chrome/User Data/Default/Bookmarks'
if os.path.exists(google_fav_file_path):
with open(google_fav_file_path, 'rb') as r:
goog_fav = r.read().decode('utf-8')
return goog_fav
def get_bookmark_total(bookstr):
"""将书签文件转换成Python字典"""
if len(book_str):
book_json = json.loads(book_str)
# 得到主要内容
children_bar = book_json['roots']['bookmark_bar']['children']
return children_bar
def get_detail(children: list, name, index):
"""递归解析书签信息"""
if len(children) > 0:
for child in children:
if 'children' in child and child.get('type') == 'folder':
# 书签文件夹,进行递归解析
get_detail(child.get('children'), f'{name} -- {child.get("name")}', index+1)
if child.get('type') == 'url':
# 书签URL,进行去重判断
print_complex_url(index, name, child.get('name'), child.get('url'))
total_fav = dict()
def print_complex_url(index, direct, name, url):
"""按照书签名检查是否重复"""
if f'{name}' in total_fav:
# 重复
if index >= total_fav.get(f'{name}')[0]:
print(direct, name)
else:
print(total_fav.get(f'{name}')[1], name)
total_fav[f'{name}'] = [index, direct, name, url]
else:
# 不重复
total_fav[f'{name}'] = [index, direct, name, url]
def is_bookmarks_active():
"""检查去重后的书签是否有效"""
for key in total_fav:
url = total_fav.get(key)[3]
is_ok = is_url_ok(url)
if is_ok in [-1, -2, -3]:
print(total_fav.get(key)[1], key)
def is_url_ok(url):
"""判断URL是否有效"""
try:
resu = requests.get(url, timeout=5)
if resu.status_code == 200:
# 正常
return 0
else:
return -3
except requests.exceptions.ConnectionError as e:
return -1
except Exception as e:
return -2
if __name__ == '__main__':
book_str = read_file()
children_bar = get_bookmark_total(book_str)
# print(type(children_bar))
get_detail(children_bar, 'root', 0)
print('检查书签重复完成')
is_bookmarks_active()
缺少了你需要在浏览器上使用selenium模块自动化控制浏览器来实现搜索。在你的现有脚本中,只是读取了Chrome浏览器的书签文件,并对这些URL进行了一些操作。如果你需要跳转到搜索页面,可以使用selenium模块以以下步骤实现:
安装selenium模块,可以通过pip install selenium来安装;
从selenium模块中导入webdriver;
首先创建chrome_driver的实例;
使用get方法去访问你需要的网站的链接;
在Python中输入一些字符,然后通过webdriver找到搜索框并向它输入这些内容;
可以使用webdriver对象的click()方法单击搜索按钮,屏幕将滚动到搜索结果页面,并显示搜索结果。
下面是可能实现该脚本的Python代码片段:
from selenium import webdriver
# 打开Chrome浏览器
driver = webdriver.Chrome()
# 获取Chrome浏览器窗口
driver.get("https://www.baidu.com")
# 获取搜索框对象
search_text = driver.find_element_by_id("kw")
# 输入文本内容
search_text.send_keys("自然语言处理")
# 获取“百度一下”按钮并单击它
start_search = driver.find_element_by_id("su")
start_search.click()
这将启动Chrome浏览器并打开百度搜索页面,然后自动输入"自然语言处理"并单击"百度一下"按钮。请注意,这只是基本示例代码,你需要根据你自己的实际需要进行修改,例如更改搜索关键字和查找元素的方法(例如使用class name或xpath等)。