Проверьте, не находится ли URL-адрес в закладке в автономном режиме или онлайн в Python - PullRequest
0 голосов
/ 22 февраля 2019

Интересно, можно ли проверить URL из моих закладок?Таким образом, я могу видеть, является ли URL все еще онлайн или офлайн.

Я вижу, что я могу проверить его с помощью Urllip2 Код Urllip2

import socket
from urllib2 import urlopen, URLError, HTTPError

socket.setdefaulttimeout( 23 )  # timeout in seconds

url = 'http://google.com/'
try :
    response = urlopen( url )
except HTTPError, e:
    print 'The server couldn\'t fulfill the request. Reason:', str(e.code)
except URLError, e:
    print 'We failed to reach a server. Reason:', str(e.reason)
else :
    html = response.read()
    print 'got response!'
    # do something, turn the light on/off or whatever

Мой вопрос таков:можно ли получить ссылки / URL-адреса из моих закладок (Chrome) и проверить URL-адреса в цикле (для), если URL-адрес находится в автономном режиме или в сети.

РЕДАКТИРОВАТЬ 26/02/2019 ... Есть т /Воспользуйтесь этим кодом и получите сообщение об ошибке: папка не найдена. / import json из jsonpath_rw import parse import os

# PArse te Bookmarks file from json into a dict
input_filename = os.path.join(os.getenv("APPDATA"), "\\Local\\Google\\Chrome\\User Data\\Default\\Bookmarks")
if os.path.isfile(input_filename):
    with open(input_filename) as data_file:
        bookmark_data = json.load(data_file)

# Set an xpath expression for all 'url' children
    expr = parse('$..url')

# print the value of all url keys
    print([x.value for x in expr.find(bookmark_data)])
else:
    print("File not found!")
    print(input_filename)

1 Ответ

0 голосов
/ 22 февраля 2019

Chrome (или, по крайней мере, Chromium) хранит ваши закладки в файле с именем Bookmarks в области конфигурации Chrome - в Linux это обычно .config/chromium/Default/Bookmarks, в Windows это AppData\Local\Google\Chrome\User Data\Default\Bookmarks (хотя вам может понадобитьсяохотиться за ним, если ваша система отличается).

Если вы хотите проверить все ссылки, то вы, вероятно, захотите рекурсивно пройтись по дереву, отыскивая ключи url и получая их значения.Поскольку это JSON, я бы рекомендовал использовать библиотеку JSONPath (https://readthedocs.org/projects/jsonpath-rw/),, а не писать собственную рекурсивную функцию:

import json
from jsonpath_rw import parse

# PArse te Bookmarks file from json into a dict
with open('Bookmarks') as bm:
    data = json.load(bm)

# Set an xpath expression for all 'url' children
expr = parse('$..url')

# print the value of all url keys
print([x.value for x in expr.find(data)])
...