«TypeError: ожидаемая строка или байтовоподобный объект» при попытке получить числа с веб-страницы с BeautifulSoup - PullRequest
0 голосов
/ 12 ноября 2019

Я пытаюсь извлечь целые числа из URL с помощью bs4. Я импортировал re, чтобы получить числа, но я получаю вышеуказанную ошибку. Я запутался и был бы признателен за некоторую помощь.

from urllib.request import urlopen
from bs4 import BeautifulSoup
import ssl
import re

# Ignore SSL certificate errors
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE

url = input('Enter - ')
html = urlopen(url, context=ctx).read()
soup = BeautifulSoup(html, 'html.parser')

# Retrieve all of the anchor tags
tags = soup('span')
for tag in tags:
    re.findall('<span.*[0-9].*',tag)

Ссылка http://py4e -data.dr-chuck.net / comments_314936.html
Ожидаемый вывод: Распечатать числапо ссылке

Ответы [ 2 ]

2 голосов
/ 12 ноября 2019

Вы можете получить номер напрямую, используя .get_text(). И я удалил ненужный код.

from urllib.request import urlopen
from bs4 import BeautifulSoup


url = 'http://py4e-data.dr-chuck.net/comments_314936.html'
html = urlopen(url).read()
soup = BeautifulSoup(html, 'html.parser')

# Retrieve all of the anchor tags
tags = soup('span')
for tag in tags:
    print(tag.get_text())

Вывод:

100
98
93
91
.
.
.
1 голос
/ 12 ноября 2019

'tag' возвращается как bs4.element.tag
, который должен быть получен в виде строки для поиска в этом.

from urllib.request import urlopen
from bs4 import BeautifulSoup
import ssl
import re

# Ignore SSL certificate errors
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE

url = input('Enter - ')
html = urlopen(url, context=ctx).read()
soup = BeautifulSoup(html, 'html.parser')

# Retrieve all of the anchor tags
tags = soup('span')

for tag in tags:
    word = re.findall('(\d+)',str(tag), re.I)
    word = ''.join(word)
    print(word)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...