Я пытаюсь извлечь несколько факторов из каждого повторяющегося тега в файле HTML.
....
<div class = "title">
<a target = "_blank" id = "jl_fe575975c912af9e" href = "https://www.indeed.com/company/Nestvestor/jobs/Data-Science-Intern-fe575975c912af9e?fccid=8eed076a625928e7&vjs=3" onmousedown = "return rclk(this,jobmap[0],0);" onclick = " setRefineByCookie(['radius']); return rclk(this,jobmap[0],true,0);" rel = "noopener nofollow" title = "Data Science Intern" class = "jobtitle turnstileLink " data-tn-element = "jobTitle">
Data Science Intern</a>
</div>
<div class = "sjcl">
<div>
<span class = "company">
Nestvestor</span>
</div>
<div class = "jobsearch-SerpJobCard unifiedRow row result clickcard" id = "p_9cfaca3374641aa0" data-jk = "9cfaca3374641aa0" data-tn-component = "organicJob">
<div class = "title">
<a target = "_blank" id = "jl_9cfaca3374641aa0" href = "https://www.indeed.com/rc/clk?jk=9cfaca3374641aa0&fccid=1779658d5b4ae2b0&vjs=3" onmousedown = "return rclk(this,jobmap[1],0);" onclick = " setRefineByCookie(['radius']); return rclk(this,jobmap[1],true,0);" rel = "noopener nofollow" title = "Product Manager" class = "jobtitle turnstileLink " data-tn-element = "jobTitle">
Product Manager</a>
</div>
<div class = "sjcl">
<div>
<span class = "company">
<a data-tn-element = "companyName" class = "turnstileLink" target = "_blank" href = "https://www.indeed.com/cmp/Sojern" onmousedown = "this.href = appendParamsOnce(this.href, 'from=SERP&campaignid=serp-linkcompanyname&fromjk=9cfaca3374641aa0&jcid=1779658d5b4ae2b0')" rel = "noopener">
Sojern</a></span>
...
soup = BeautifulSoup(open(input("Enter a file to read: ")), "html.parser")
title = soup.find_all('div', class_='title')
for span in title:
print(span.text)
company = soup.find_all('span', class_='company')
for span in company:
print(span.text)
Пока я понял, как получить следующий результат:
Job_Title1
Job_Title2
Job_Title3
И в другом результате кода:
Company_name1
Company_Name2
Company_Name3
Как мне сделать так, чтобы результаты выглядели так с одним запуском кода:
Job_Title1,Company_Name1,
Job_Title2, Company_Name2,
Job_Title3, Company_Name3,
Из того, что у вас есть, похоже, вам нужно вложить свои петли. Без сайта сложно сказать, но я бы попробовал что-то подобное.
company = soup.find_all('span', class_='company')
title = soup.find_all('div', class_='title')
for span in title:
for x in company:
print(x.text,span.text)
Очевидно, он выведет 9 результатов вместо 3 из-за структуры циклов for @OscarEvolves.
Единственная проблема, с которой я столкнулся, это то, что когда я добавил оператор .append(str())
, мне пришлось разделить оператор печати. то есть for span in jobTitle: for x in companyName: comps_and_jobs.append(str(x.text)) comps_and_jobs.append(str(span.text)) return comps_and_jobs
Добро пожаловать в Stack Overflow, просто используйте это:
company = soup.find_all('span', class_='company')
title = soup.find_all('div', class_='title')
for t,c in zip(title, company):
print ("Job_Title :%s Company_Name :%s" %(t.text,c.text))
Привет, Анкит, спасибо. Где я могу найти дополнительную информацию о 'zip' и использовании ':%s'. Я не очень понимаю их использование.
Результат для этого дал мне не текст, а весь код тега по какой-то причине.
Вот проверьте это молния и Форматирование строки
Спасибо @Ankit Agrawal, как мне узнать больше об этом: ("Job_Title :%s Company_Name :%s" %(t.text,c.text))
Привет, Майкл, это сработало! В результате почему-то повторяются разные версии.