簡體   English   中英

Python Beautiful Soup 僅在文本匹配時刮?

[英]Python Beautiful Soup scrape only if text match?

我剛開始學習美味的湯,一直在看視頻並掌握了一些。 但是提供的示例,它們似乎已經在 HTML 中具有良好的結構,並且沒有在任何地方搜索特定的單詞。 我嘗試做的是只打印提到的特定國家的信息,如果沒有提到 - 它不應該打印。 稍后將構建 append 到文本文件。 我只是想抓住所有來自新西蘭的人,但為了進行實驗,我一直在使用美國,因為它的發布頻率更高。

目前我的代碼看起來像這樣,它只是抓住了所有這些。

from bs4 import BeautifulSoup
import requests

source = requests.get('https://pogotrainer.club/?sort=worldwide').text
soup = BeautifulSoup(source, 'lxml')

trainer = soup.find('article')
for box in trainer.find_all('div', class_='media-body'):
    print(box.text)

在一個教程中,我看到他們使用了 findNext,因為無論如何重要的是列出的朋友代碼。 所以我試着這樣做

usa = box.find(text="United States").findNext(class_="TCLink")

但是用 print(usa) 打印它,給我錯誤

AttributeError: 'NoneType' object 沒有屬性 'findNext'

以前,我也嘗試過類似的東西

usa = soup.find(text="United")

但它打印

沒有任何

即使看頁面,它確實有它。 有人有建議嗎?

提前致謝

AttributeError: 'NoneType' object has no attribute 'findNext'讓我們分解一下:

  • NoneType objectbox
  • 您使用.findNext (實際上是一種方法)訪問該attribute ,但由於 object 是None ,因此該語句沒有意義。

您假設該box不是None ,因此您必須確保您正在使用什么。 你可能想試試這個:

for box in trainer.find_all('div', class_='media-body'):
    print(box)

始終嘗試通過例如顯式打印來了解您正在使用的內容。

這是 Python 的弱點之一(或優勢,取決於您的工作),它將調試的這一部分留給用戶。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM