我正在用BeautifulSoup练习抓取。我想在Daijob上查找Data Analysis职位时抓取所有所有结果。共有70个结果,分为7页,每页10个结果。
for(int i = 1; i < count.size(); i++){
if(count[i-1] == (count[i])){
return false;
}
}
因此,我们的想法是页面数将继续增加,并且当页面数达到8时,循环将停止。
自从status_code值达到没有数据的页码后,该值已从410(而不是200)开始在其他网站上起作用。
但是在这种情况下,无论您放置多少页(甚至可以是100000),它都始终提供status_code 200,因此即使没有更多有用的数据要剪贴,我也无法停止循环。
有没有更有效的方法来自动停止该循环?谢谢!
答案 0 :(得分:1)
未找到任何作业时,网站会显示以下消息:No jobs were found that matched your search.
您可以使用它来查找页面是否包含任何作业。这是完整的代码:
import time
import requests
from bs4 import BeautifulSoup
website = 'https://www.daijob.com/en/jobs/search_result?job_search_form_hidden=1&keywords=Data+Analyst'
page = 0
while True:
time.sleep(1)
r = requests.get(website, params = {"page" : page+1})
if 'No jobs were found that matched your search.' in r.text:
break
else:
html = r.content
soup = BeautifulSoup(html, "lxml")
print('\033[1m' + 'Web 1, page {0}'.format(page+1) + '\033[0m')
page += 1
输出:
Web 1, page 1
Web 1, page 2
Web 1, page 3
Web 1, page 4
Web 1, page 5