Разобрать сайт с Beautiful Soup, чтобы найти подходящие данные - PullRequest
0 голосов
/ 09 мая 2019

Я пытаюсь использовать Python + BeautifulSoup для обхода веб-сайта, чтобы найти подходящую строку, содержащуюся в теге. Когда найдена соответствующая подстрока, остановите итерацию и напечатайте диапазон, но не можете найти способ выполнить эту работу.

это то, что мне удалось до сих пор решить


import urllib.request
from bs4 import BeautifulSoup as b

num = 1

base_url = "https://v-tac.it/led-products-results-page/?q="
request = '500'
separator = '&start='
page_num = "1"

url = base_url + request + separator + page_num

html = urllib.request.urlopen(url).read()
soup = b(html, "html.parser")

for i in range(100) :
    for post in soup.findAll("div",{"class" : "spacer"}):
        h = post.findAll("span")[0].text
        if "request" in h:
            break
            print(h)

    num += 1
    page_num = str(num)
    url = base_url + request + separator + page_num
    html = urllib.request.urlopen(url).read()
    soup = b(html, "html.parser")
    print("We are at page " + page_num)

Но он ничего не возвращает, он только перебирает страницы.

Заранее спасибо за любую помощь

1 Ответ

0 голосов
/ 09 мая 2019

Если оно есть в тексте, тогда с помощью bs4 4.7.1 вы сможете использовать: содержит

soup.select_one('.spacer span:contains("request")').text if soup.select_one('.spacer span:contains("request")') is not None else 'Not found'

Я не уверен, почему, когда у вас есть for i in range(100), вы не используете i вместо num позже; тогда вам не понадобится +=

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...