Веб-парсинг с BS4, выбор по идентификатору div по-прежнему возвращает всю страницу - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь очистить страницу текущих событий википедии здесь: https://en.wikipedia.org/wiki/Portal: Current_events . Конкретно текущая дата. Используя элемент inspect, я вижу, что вся необходимая мне информация хранится в div с идентификатором «2020_June_15». В моем скрипте я указываю этот идентификатор c id, однако мой текущий скрипт продолжает извлекать все со страницы. Что мне не хватает?

Вот сценарий python wiki.py:

import sys
import requests
import bs4

res = requests.get('https://en.wikipedia.org/wiki/Portal:Current_events')
res.raise_for_status()


soup = bs4.BeautifulSoup(res.text,"lxml")
elems = soup.select('div', {"id": "2020_June_15"})
for i in range(len(elems)):
    print(elems[i].getText())

Ответы [ 2 ]

0 голосов
/ 16 июня 2020

Вы действительно близки. Вместо «выбрать» используйте «найти»

import sys
import requests
import bs4

res = requests.get('https://en.wikipedia.org/wiki/Portal:Current_events')
res.raise_for_status()

soup = bs4.BeautifulSoup(res.text,"lxml")
elems = soup.find('div', {"id": "2020_June_15"})
for i in range(len(elems)):
    print(elems[i].getText())
0 голосов
/ 16 июня 2020

замените soup.select на soup.find_all

import sys
import requests
import bs4

res = requests.get('https://en.wikipedia.org/wiki/Portal:Current_events')
res.raise_for_status()


soup = bs4.BeautifulSoup(res.text,"lxml")
elems = soup.find_all('div', {"id": "2020_June_15"})
for i in range(len(elems)):
    print(elems[i].getText())
...