#python #html #web-scraping #beautifulsoup #google-search
Вопрос:
Как я могу получить ссылки, если тег находится в этой форме?
<a href="/url?q=instagram.com/goinggourmet/… class="zBAuLc"><div class="BNeawe vvjwJb AP7Wnd">Going Gourmet Catering (@goinggourmet) - Instagram</div></h3><div class="BNeawe UPmit AP7Wnd">www.instagram.com › goinggourmet</div></a>
Я попробовал приведенный ниже код, и он помог мне получить только URL-адреса, но URL-адреса представлены в этом формате.
/url?q=https://bespokecatering.sydney/amp;sa=Uamp;ved=2ahUKEwjTv6ueseHyAhUHb30KHYTYABwQFnoECAEQAgamp;usg=AOvVaw076QI0_4Yw4hNZ6iXHQZL-
/url?q=https://www.facebook.com/bespokecatering.sydney/videos/lockdown-does-not-mean-unfulfilled-cravings-order-our-weekly-favorites-order-her/892336708293067/?extid=SEO----amp;sa=Uamp;ved=2ahUKEwjTv6ueseHyAhUHb30KHYTYABwQtwJ6BAgEEAEamp;usg=AOvVaw2YQI1Bqwip72axc-Nh2_6e
/url?q=https://www.instagram.com/bespoke_catering/?hl=enamp;sa=Uamp;ved=2ahUKEwjTv6ueseHyAhUHb30KHYTYABwQFnoECAoQAgamp;usg=AOvVaw1QUCWYmxfSLb6Jx20hyXIR
Мне нужны только URL-адреса из Facebook и Instagram, без каких-либо дополнительных формулировок, я имею в виду, что мне нужна только реальная ссылка, а не перенаправленная ссылка.
Мне нужно что-то подобное из ссылок выше,
‘https://www.facebook.com/bespokecatering.sydney’ ‘https://www.instagram.com/bespoke_catering’
div = soup.find_all('div',attrs={'class':'kCrYT'})
for w in div:
for link in w.select('a'):
urls = link['href']
print(urls)
Мы очень ценим любую помощь.
Я попробовал приведенный ниже код, но он возвращает пустые результаты или другие результаты
div = soup.find_all('div',attrs={'class':'kCrYT'})
for w in div:
for link in w.select('a'):
urls = link['href']
print(urls)
for url in urls:
try:
j=url.split('=')[1]
k= '/'.join(j.split('/')[0:4])
#print(k)
except:
k = ''
Ответ №1:
У вас уже есть <a>
выбранный — просто повторите выбор и распечатайте результаты с помощью ['href']
:
div = soup.find_all('div',attrs={'class':'kCrYT'})
for w in div:
for link in w.select('a'):
print(link['href'])
Если вы улучшите свой вопрос и добавите дополнительную информацию по запросу, мы сможем ответить более подробно.
Редактировать
Отвечая на ваш дополнительный вопрос простым примером (что-то, что вы должны указать в своем вопросе)
import requests
from bs4 import BeautifulSoup
result = '''
<div class="kCrYT">
<a href="/url?q=https://bespokecatering.sydney/amp;sa=Uamp;ved=2ahUKEwjTv6ueseHyAhUHb30KHYTYABwQFnoECAEQAgamp;usg=AOvVaw076QI0_4Yw4hNZ6iXHQZL-"></a>
</div>
<div class="kCrYT">
<a href="/url?q=https://www.facebook.com/bespokecatering.sydney/videos/lockdown-does-not-mean-unfulfilled-cravings-order-our-weekly-favorites-order-her/892336708293067/?extid=SEO----amp;sa=Uamp;ved=2ahUKEwjTv6ueseHyAhUHb30KHYTYABwQtwJ6BAgEEAEamp;usg=AOvVaw2YQI1Bqwip72axc-Nh2_6e"></a>
</div>
<div class="kCrYT">
<a href="/url?q=https://www.instagram.com/bespoke_catering/?hl=enamp;sa=Uamp;ved=2ahUKEwjTv6ueseHyAhUHb30KHYTYABwQFnoECAoQAgamp;usg=AOvVaw1QUCWYmxfSLb6Jx20hyXIR"></a>
</div>
'''
soup = BeautifulSoup(result, 'lxml')
div = soup.find_all('div',attrs={'class':'kCrYT'})
for w in div:
for link in w.select('a'):
print(dict(x.split('=') for x in requests.utils.urlparse(link['href']).query.split('amp;'))['q'].split('?')[0])
Результат:
https://bespokecatering.sydney/
https://www.facebook.com/bespokecatering.sydney/videos/lockdown-does-not-mean-unfulfilled-cravings-order-our-weekly-favorites-order-her/892336708293067/
https://www.instagram.com/bespoke_catering/
Комментарии:
1. спасибо, что сработало. Но у меня есть URL-адреса, такие как «‘/url?q=facebook.com/bespokecatering.sydney/videos /… «, который не работает в качестве URL-адреса, так как же обрезать все URL-адреса до чего-то подобного? «‘ facebook.com/bespokecatering.sydney «‘ , Помощь приветствуется 🙂
2. Есть много способов 😉 — Пожалуйста, улучшите / отредактируйте свой вопрос(не комментарии) и опубликуйте URL/код, чтобы я мог воспроизвести, было бы здорово.
3. Отредактировал свой вопрос сейчас, новичок в платформе, поэтому работаю над ним. Пожалуйста, посмотрите, сможете ли вы воспроизвести какие-либо результаты. ТИА.