У меня есть этот TypeError: объект 'list' не вызывается в цикле for при вызове функций, которые я определил ранее. Я хочу добавить / ввести функции в мой цикл for для автоматического заполнения строк CSV столбцами
import requests
import bs4
from bs4 import BeautifulSoup
import pandas as pd
import time
import csv
# copy and paste the url from indeed using your search term
URL = 'https://www.indeed.com/jobs?q=data+science+summer+intern&l=New+York'
# conducting a request of the stated URL above:
page = requests.get(URL)
# specifying a desired format of “page” using the html parser - this allows python to read the various components of the page, rather than treating it as one long string.
soup = BeautifulSoup(page.text, 'html.parser')
# printing soup in a more structured tree format that makes for easier reading
print(soup.prettify())
Эта функция extract_job_title_from_result () извлекает из названия «должность» и добавляет ее в список «рабочих мест».
def extract_job_title_from_result(soup):
jobs = []
for div in soup.find_all(name='div', attrs={'class':'row'}):
for a in div.find_all(name='a', attrs={'data-tn-element':'jobTitle'}):
jobs.append(a['title'])
return(jobs)
extract_job_title_from_result = extract_job_title_from_result(soup)
print('extract_job_title_from_result is: ', extract_job_title_from_result)
output: extract_job_title_from_result is: ['Летний стажер инженера по данным', 'Летний стажер по науке о данных', 'Летний стажер по науке о данных', 'Интернат по статистическим исследованиям и науке о данных', 'Интернат по исследованию данных / анализу данных - лето 2019 года' ' , «Летняя стажировка 2019 года - Data Science Internship, Бейсбольные данные», «Data Science Летняя стажировка 2019 года», «Intern, Data Science», «Data Science Intern (анализ социальных медиа)», «Data Science Intern»]
# Set max result per city
max_results_per_city = 100
city_set = ['New+York','Chicago','San+Francisco', 'Austin', 'Seattle', 'Los+Angeles', 'Philadelphia', 'Dallas', 'Pittsburgh', 'Denver', 'Miami', 'Washington+DC','Jersey+City', 'Princeton']
columns = ['city', 'job_title', 'company_name', 'location', 'summary', 'salary']
sample_df = pd.DataFrame(columns = columns)
sample_df
вывод для sample_df в качестве заголовка столбца, но пока нет данных = город job_title company_name итоговая зарплата
Прямо сейчас я пытаюсь очистить и извлечь данные из Интернета. Я уже написал функции, которые работали и могут использовать эти функции для сохранения / добавления в столбец по имени столбца в CSV.
Я хочу собрать 100 результатов в каждом городе и сохранить / добавить эти данные, используя функции, которые я записал в CSV-файл.
for city in city_set:
for start in range(0, max_results_per_city, 10):
#ensuring at least 1 second between page grabs
time.sleep(1)
#soup = BeautifulSoup(page.text, 'lxml', from_encoding='utf-8')
sample_df['job_title'] = extract_job_title_from_result(soup)
### Ignore the below functions. They worked individually but not here in this for loop. I'm using a function to try to make it work first before appending all functions to csv by column name
#extract_company_from_result(soup)
#extract_location_from_result(soup)
#extract_salary_from_result(soup)
#extract_summary_from_result(soup)
#sample_df.loc[num] = job_post
sample_df.to_csv('/Users/KingKong1/AnacondaProjects/testing1.csv', encoding='utf-8')
Я получил сообщение «TypeError: объект list не вызывается» из **sample_df['job_title'] = extract_job_title_from_result(soup)**