Алексей Лукконенcard.quoted8 күн бұрын
else:

internalLinks.append(link.attrs['href'])

return internalLinks

# Получить список всех внешних ссылок, найденных на странице.

def getExternalLinks(bs, excludeUrl):

externalLinks = []

# Найти все ссылки, которые начинаются с "http" или "www",

# не содержащие текущий URL.

for link in bs.find_all('a',

href=re.compile('^(http|www)((?!'+excludeUrl+').)*$')):

if link.attrs['href'] is not None:

if link.attrs['href'] not in externalLinks:

externalLinks.append(link.attrs['href'])

return externalLinks

def getRandomExternalLink(startingPage):

html = urlopen(startingPage)

bs = BeautifulSoup(html, 'html.parser')

externalLinks = getExternalLinks(bs,

urlparse(startingPage).netloc)

if len(externalLinks) == 0:

print('No external links, looking around the site for one')

domain = '{}://{}'.format(urlparse(startingPage).scheme,

urlparse(startingPage).netloc)

internalLinks = getInternalLinks(bs, domain)

return getRandomExternalLink(internalLinks[random.randint(0,

len(internalLinks)-1)])

else:

return externalLinks[random.randint(0, len(externalLinks)-1)]

def followExternalOnly(startingSite):

externalLink = getRandomExternalLink(startingSite)

print('Random external link is: {}'.format(externalLink))

followExternalOnly(externalLink)

followExternalOnly('http://oreilly.com')
  • Комментарий жазу үшін кіру немесе тіркелу
    )):\r\n\r\n if link.attrs['href'] is not None:\r\n\r\n if link.attrs['href'] not in externalLinks:\r\n\r\n externalLinks.append(link.attrs['href'])\r\n\r\n return externalLinks\r\n\r\n \r\n\r\n def getRandomExternalLink(startingPage):\r\n\r\n html = urlopen(startingPage)\r\n\r\n bs = BeautifulSoup(html, 'html.parser')\r\n\r\n externalLinks = getExternalLinks(bs,\r\n\r\n urlparse(startingPage).netloc)\r\n\r\n if len(externalLinks) == 0:\r\n\r\n print('No external links, looking around the site for one')\r\n\r\n domain = '{}:\u002F\u002F{}'.format(urlparse(startingPage).scheme,\r\n\r\n urlparse(startingPage).netloc)\r\n\r\n internalLinks = getInternalLinks(bs, domain)\r\n\r\n return getRandomExternalLink(internalLinks[random.randint(0,\r\n\r\n len(internalLinks)-1)])\r\n\r\n else:\r\n\r\n return externalLinks[random.randint(0, len(externalLinks)-1)]\r\n\r\n \r\n\r\ndef followExternalOnly(startingSite):\r\n\r\n externalLink = getRandomExternalLink(startingSite)\r\n\r\n print('Random external link is: {}'.format(externalLink))\r\n\r\n followExternalOnly(externalLink)\r\n\r\n followExternalOnly('http:\u002F\u002Foreilly.com')","created_at":1764249561,"item_uuid":"021jnmq6","finish_node_offset":44,"finish_node_xpath":"style[1]\u002Ftext()[1]","liked":false,"likes_count":0,"progress":19,"start_node_offset":7,"start_node_xpath":"style[1]\u002Ftext()[1]","state":"exists","style":"highlight","book":"oFWXmKey","uuid":"czSfSoqv","permanent_hidden":false,"all_quotes_count":32,"kind":"quote","creator":"b6953111910","liker_users":[],"resourceType":"quote"}},"users":{"b6953111910":{"id":112342366,"name":"Алексей Лукконен","login":"b6953111910","avatar":{"large":"https:\u002F\u002Favatars.mds.yandex.net\u002Fget-yapic\u002F27232\u002F00edFaez36wtTjGdBle4LjVU-1\u002Fislands-200","small":"https:\u002F\u002Favatars.mds.yandex.net\u002Fget-yapic\u002F27232\u002F00edFaez36wtTjGdBle4LjVU-1\u002Fislands-200"},"gender":"m"}},"shelves":{"topics":[],"objects":[],"tabs":{},"mobileNavShown":false},"libraryCards":{},"audioCards":{},"emotions":{},"posts":{},"banners":{},"feedEntries":{},"comments":{"ids":[]},"series":{},"showcaseSections":{}}},"env":"production","config":{"locales":["ru","kk","en","uz"],"fallbackLocale":"ru","passportUrl":"https:\u002F\u002Fpassport.yandex.ru","passportApiUrl":"https:\u002F\u002Fapi.passport.yandex.ru","mdaScriptUrl":"https:\u002F\u002Fsso.bookmate.ru\u002Fjs\u002Fv1\u002Fmda2.1.min.js","mdaSdkRoot":"sso.passport.yandex.ru","paymentManagerScript":"https:\u002F\u002Fpayment-widget.plus.bookmate.ru\u002Fpayment-manager.js","plusApiUrl":"https:\u002F\u002Fapi.plus.yandex.ru\u002Fgraphql","plusUrl":"https:\u002F\u002Fplus.yandex.ru","searchTimeout":"","clientEnv":{"HOST":"bookmate.ru","CERT_ENV":"production","CANVAS_HOST":"https:\u002F\u002Fcanvas.bookmate.ru","READER_HOST":"https:\u002F\u002Freader.bookmate.ru","APP_ENV":"production","PASSPORT_API_URL":"https:\u002F\u002Fapi.passport.yandex.ru","PASSPORT_URL":"https:\u002F\u002Fpassport.yandex.ru","AVATARTS_HOST":"https:\u002F\u002Favatars.mds.yandex.net","DISABLE_ANALYTICS":"true","ENABLE_EVGEN_LOG":"","BASE_HOST":"https:\u002F\u002Fbookmate.ru","IS_BOOKS_ENABLED":"true"},"styles":{"bp":{"desktopLarge":"screen and (min-width: 1600px)","desktopMedium":"screen and (min-width: 1296px) and (max-width: 1599px)","desktop":"screen and (min-width: 1024px) and (max-width: 1295px)","tablet":"screen and (min-width: 768px) and (max-width: 1023px)","mobile":"screen and (max-width: 767px)"}},"private":null},"FEATURE_APP_LINK":"https:\u002F\u002Fredirect.appmetrica.yandex.com\u002Fserve\u002F748542709802814784?campaign_name=app_button","FEATURE_APP_LINK_ENABLE":"true"} {{ HEAD }} {{ POINT_STYLES }} {{ STYLE_CHUNKS }} {{ HELMET_STYLES }}