Я новичок в веб-скребке, Может ли кто-нибудь помочь мне найти, где в моей проблеме?

#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:

  1. В качестве ссылок в h2 теге вы можете найти все h2 теги, которые возвращают список элементов, где первый элемент в списке не содержит a тегов, поэтому мы можем начать с индекса 1
  2. А затем найдите a get и извлеките href из него!
  3. 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')