#python #web-scraping #beautifulsoup
Вопрос:
я новичок, только начинаю изучать python. Я хочу получить все ссылки со страницы, но когда я использую .get(‘href’), его ошибка показывает, может ли кто-нибудь сказать мне, в чем моя проблема. и еще один вопрос заключается в том, как использовать find_all несколько раз, например
page = soup.find_all('h2')
page
link = page.find('a')
link
import requests
from bs4 import BeautifulSoup
url = 'https://example/'
page = requests.get(url)
soup = BeautifulSoup(page.text, 'lxml')
soup
link = soup.find_all('a')
link
link.get('href')
Комментарии:
1. find_all на самом деле возвращает список всех, в данном случае, тегов «a», в чем ошибка, которую вы получаете?
2. вам нужно выполнить итерацию
link
, чтобы получить href из него, если вы все еще получаете ошибку, пожалуйста, опубликуйте URL, если это возможно3. импорт запросов из bs4 импорта BeautifulSoup URL-адрес = ‘ katmoviehd.СК ‘ страницы = запросы.получить(URL-адрес) суп = BeautifulSoup(странице.отрывок, библиотека lxml’) страницы суп = суп.find_all(‘Н2’) ссылку на страницы = страницы.ссылка find_all(‘а’).вам(‘близко’)
Ответ №1:
- В качестве ссылок в
h2
теге вы можете найти всеh2
теги, которые возвращают список элементов, где первый элемент в списке не содержитa
тегов, поэтому мы можем начать с индекса 1- А затем найдите
a
get и извлекитеhref
из него!i.find("a").get("href")
тоже будет работать!
import requests
from bs4 import BeautifulSoup
re=requests.get("https://katmoviehd.sk/")
soup=BeautifulSoup(re.text,"html.parser")
page = soup.find_all('h2')[1:]
for i in page:
print(i.find("a")['href'])
Выход:
https://katmoviehd.sk/the-passing-2011/
https://katmoviehd.sk/vacation-friends-2021-hd/
https://katmoviehd.sk/d-p-2021/
https://katmoviehd.sk/sas-red-notice/
https://katmoviehd.sk/hes-all-that/
....
Комментарии:
1. спасибо, что это работает, я понимаю, что мне нужно использовать .find(«a»)[‘href’]
2. вы можете использовать оба, это будет работать два, просто разные методы, которые работают одинаково
3. Спасибо, босс получил это и за заголовок для i на странице: печать(я.нахожу(«а»)[‘название’]) потрясающе
4. сэр, вы можете помочь мне больше, я заполняю полный код и делаю цикл, чтобы получить данные со всех страниц, на которых есть 550 страниц, но я хочу удалить только 10 или 20 страниц, поэтому, как я это определяю, вот мой код, пока он верен: next_page = soup.find («a», class_ = «номера следующей страницы»). get («href») url-адрес next_page = страница next_page = запросы.get(url) soup = BeautifulSoup(страница.текст, «lxml»)
5. Пожалуйста, создайте отдельный вопрос, чтобы его было легко понять и ответить на него всем пользователям SO!
Ответ №2:
Это должно вам помочь:
import requests
from bs4 import BeautifulSoup
url = 'https://example/'
page = requests.get(url)
soup = BeautifulSoup(page.text, 'lxml')
links = soup.find_all('a')
for link in links:
link_href = link.get('href')
# or
another_way_link_href = links[0].get('href')