#python #beautifulsoup
#python #beautifulsoup
Вопрос:
Я хочу получить количество страниц с разбиением на страницы, получив текст из тегов A, содержащихся в блоке разбивки на страницы :
import bs4
from bs4 import BeautifulSoup
import requests
import pandas
from pandas import DataFrame
import time
from datetime import datetime
import csv
header = {
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36",
"X-Requested-With": "XMLHttpRequest",
}
# Get category URL
r = requests.get("https://www.sortlist.fr/s/reseaux-sociaux")
soup = BeautifulSoup(r.content)
for a_tag in soup.find_all('a', class_='s-pb50', href=True):
# The Section containing the pagination contains an A tag with the following class, so it's the parent
for a_tag in soup.find_all('a', class_='s-underline', href=True):
# This is where the number is contained
print(soup.find_all('a', class_='s-underline', href=True))
Но тогда код не возвращает никаких значений или сообщения об ошибке! кто-нибудь может помочь? Спасибо!!!
Ссылка такова: https://www.sortlist.fr/s/reseaux-sociaux
Ответ №1:
Почему бы просто не a
использовать тег с class s-underline
без всех этих вложенных циклов?
Например:
import requests
from bs4 import BeautifulSoup
header = {
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36",
"X-Requested-With": "XMLHttpRequest",
}
# Get category URL
soup = BeautifulSoup(requests.get("https://www.sortlist.fr/s/reseaux-sociaux").content, "html.parser")
for anchor in soup.find_all("a", class_="s-underline", href=True):
print(anchor["href"])
Вывод:
/sitemap
/explore
https://www.sortlist.fr
https://www.sortlist.fr/explore
https://www.sortlist.fr/s/charte-graphique
https://www.sortlist.fr/s/conseil
https://www.sortlist.fr/s/identite-visuelle
https://www.sortlist.fr/s/publicite
https://www.sortlist.fr/s/redaction
https://www.sortlist.fr/s/strategie-digitale
https://www.sortlist.fr/s/webmarketing
https://www.sortlist.fr/s/communication-globale
https://www.sortlist.fr/s/communication-graphique
https://www.sortlist.fr/s/univers-graphique-de-marque
Редактировать:
Это sl-link
атрибут привязки, поэтому, если вы хотите получить их все, попробуйте это:
import requests
from bs4 import BeautifulSoup
header = {
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36",
"X-Requested-With": "XMLHttpRequest",
}
soup = BeautifulSoup(requests.get("https://www.sortlist.fr/s/reseaux-sociaux").content, "html.parser")
for anchor in soup.find_all("a"):
try:
print(f"{anchor['sl-link']}")
except KeyError:
continue
С принтами:
xx-aHR0cHM6Ly93d3cuc29ydGxpc3QuZnIv
xx-L2hvdy1pdC13b3Jrcy9jbGllbnQ=
xx-L3N0b3JpZXMvY2xpZW50
xx-L2V4cGxvcmU=
xx-L2hvdy1pdC13b3Jrcy9hZ2VuY3k=
xx-L3N0b3JpZXMvYWdlbmN5
xx-L3ByaWNpbmcvYWdlbmN5
xx-L2FwcGx5P3JlZj1uYXZiYXItYXBwbHk=
xx-L2xvZ2lu
xx-L2hvdy1pdC13b3Jrcy9jbGllbnQ=
xx-L3N0b3JpZXMvY2xpZW50
xx-L2V4cGxvcmU=
xx-L2hvdy1pdC13b3Jrcy9hZ2VuY3k=
xx-L3N0b3JpZXMvYWdlbmN5
xx-L3ByaWNpbmcvYWdlbmN5
xx-L2FwcGx5P3JlZj1uYXZiYXItYXBwbHk=
xx-L2xvZ2lu
...
Ответ №2:
Тег класса s-pb50
<section>
не <a>
:
for a_tag in soup.find('section', class_='s-pb50').find_all('a'):
Комментарии:
1. На самом деле это дает мне больше результатов, чем хотелось. чтобы настроить ее для идентификатора: для a_tag в soup.find(‘section’, id_=’нумерация страниц’).find_all(‘a’): Я что-то пропустил?
2.
id_
должно бытьid
3. Проблема в том, что продолжает получать значения за пределами раздела, как будто он не распознает, что раздел с идентификатором «Нумерация страниц» является родительским! Пожалуйста, проверьте изображение, которое я загрузил в исходном сообщении.