通过网站使用Beautiful Soup解析以找到匹配的数据

时间:2019-05-09 16:51:22

标签: python-3.x beautifulsoup

我正在尝试使用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 :(得分:0)

如果它在文本中,那么使用bs4 4.7.1应该可以使用:contains

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了;那么您就不需要+=