我想刮一些东西作为我的第一个程序,只是为了真正地学习基础知识,但是我很难显示出多个结果。
前提是要去一个论坛(http://blackhatworld.com),抓取所有线程标题并与字符串进行比较。如果包含“免费”一词,它将打印出来,否则将不会打印。
这是当前代码:
import requests
from bs4 import BeautifulSoup
page = requests.get('https://www.blackhatworld.com/')
content = BeautifulSoup(page.content, 'html.parser')
threadtitles = content.find_all('a', class_='PreviewTooltip')
n=0
for x in range(len(threadtitles)):
test = list(threadtitles)[n]
test2 = list(test)[0]
if test2.find('free') == -1:
n=n+1
else:
print(test2)
n=n+1
这是运行程序的结果: https://i.gyazo.com/6cf1e135b16b04f0807963ce21b2b9be.png
如您所见,它正在检查“免费”一词,它可以工作,但仅显示第一个结果,而页面中还有其他几个结果。
答案 0 :(得分:1)
默认情况下,字符串比较区分大小写(FREE != free
)。要解决您的问题,首先需要将test2
小写:
test2 = list(test)[0].lower()
答案 1 :(得分:1)
要解决您的问题并简化代码,请尝试以下操作:
import requests
from bs4 import BeautifulSoup
page = requests.get('https://www.blackhatworld.com/')
content = BeautifulSoup(page.content, 'html.parser')
threadtitles = content.find_all('a', class_='PreviewTooltip')
count = 0
for title in threadtitles:
if "free" in title.get_text().lower():
print(title.get_text())
else:
count += 1
print(count)
奖金:打印值href
:
for title in threadtitles:
print(title["href"])
另请参阅this。