Я пытаюсь извлечь ссылки на социальные сети из веб-сайтов для моего исследования, к сожалению, я не могу извлечь их, так как они находятся в нижнем колонтитуле сайта.
Я пытался запросить, urllib.requestapi, pattern.web для загрузки html-документа веб-страницы.Все эти API-интерфейсы загружают один и тот же контент и не могут загрузить контент в нижний колонтитул сайтов.
import requests
from bs4 import BeautifulSoup as soup
url = 'https://cloudsight.ai/'
headers = {'User-Agent':'Mozilla/5.0'}
sm_sites = ['https://www.twitter.com','https://www.facebook.com',
'https://www.youtube.com','https://www.linkedin.com',
'https://www.linkedin.com/company', 'https://twitter.com',
'https://facebook.com','https://youtube.com','https://linkedin.com',
'http://www.twitter.com','http://www.facebook.com',
'http://www.youtube.com','http://www.linkedin.com',
'http://www.linkedin.com/company', 'http://twitter.com',
'http://facebook.com','http://youtube.com','http://linkedin.com']
blocked = ['embed','search','sharer','intent','share','watch']
sm_sites_present = []
r = requests.get(url,headers=headers)
content = soup(r.content,'html.parser')
text = r.text
links = content.find_all('a',href=True)
for link in links:
a = link.attrs['href'].strip('/')
try:
if any(site in a for site in sm_sites) and not any(block in a for block in blocked):
sm_sites_present.append(a)
except:
sm_sites_present.append(None)
output:
>>> sm_sites_present
>>> []
Если вы видите элемент проверки веб-сайта, информация social_media предоставляется в DOM нижнего колонтитула DOM.
Если вы просто попробуете text.find('footer')
, результат будет -1 .
Я много часов пытался выяснить, как извлечь эту информацию из нижнего колонтитула, и у меня не получилось.
ТАК, я прошу любого помочь мне в ее решении.
Примечание. Даже если я попробовал regex, проблема в том, что при загрузке страницы информация нижнего колонтитула не загружается.