Web Scrapper_02
実際には、WastackoverflowのWebサイトに就職情報をもたらすWeb scriperを作成することができます.
requests
主にAPIの使用に使用されます.HTTPメソッド(method、または関数)のGETとPOSTは、通常使用されます.GET使用時にリクエストします.get()を使用し、POSTを使用するときに要求します.post()を使用します. Beautiful Soup
デフォルトでは、パッケージimportで
1.1.2データ抽出(データ抽出)
1.1.3クラス名がページングされたdivの検索
1.1.4すべてのa(アンカー)を検索してリストを作成し、links変数に入れる
1.1.5文字列(文字列)であるため、最後の値を除外
1.1.6 spanを検索しpagesという配列に入れる
1.1.7ページの最後の値(-1)
1.1.8 max pageを返す
1.2.2会社はありますか?
1.2.3文字列の文字を削除します.この場合、スペースで始まる文字を削除します<-スペースを削除します
1.2.4 data-rc-locの値.divのプロパティへのアクセス
1.2.5 htmlからdivのdata-jk値(=ジョブid)を取得する
1.3.2 find allすべてのリストを取得する
1.3.3 extract job関数を呼び出すことによってhtmlパラメータを受信する.ここでhtmlはリクエスト結果を含む結果である.
1.3.4この関数はジョブを返し、ジョブという名前の配列に戻ります.
1.就職情報の取得(確実)
要求モジュールとBeautiful Soupライブラリ
主にAPIの使用に使用されます.HTTPメソッド(method、または関数)のGETとPOSTは、通常使用されます.GET使用時にリクエストします.get()を使用し、POSTを使用するときに要求します.post()を使用します.
デフォルトでは、パッケージimportで
html
ファイルをインポートするか、urllib
またはrequests
モジュールで直接Webからソースファイルをインポートできます.1.1最終ページの取得
def get_last_page():
result = requests.get(URL) # 1.1.1
soup = BeautifulSoup(result.text, "html.parser") # 1.1.2
pagination = soup.find("div", {"class":"pagination"}) # 1.1.3
links = pagination.find_all('a') # 1.1.4
pages = []
for link in links[:-1]: # 1.1.5
pages.append(int(link.find("span").string)) # 1.1.6
max_page = pages[-1] # 1.1.7
return max_page # 1.1.8
1.1.1要求によりWeb上のソースを取得することができる.1.1.2データ抽出(データ抽出)
1.1.3クラス名がページングされたdivの検索
1.1.4すべてのa(アンカー)を検索してリストを作成し、links変数に入れる
1.1.5文字列(文字列)であるため、最後の値を除外
1.1.6 spanを検索しpagesという配列に入れる
1.1.7ページの最後の値(-1)
1.1.8 max pageを返す
1.2就職情報辞典
def extract_job(html):
title = html.find("h2", {"class": "title"}).find("a")["title"]
company = html.find("span", {"class": "company"}) # 1.2.1
company_anchor = company.find("a")
if company: # 1.2.2
company_anchor = company.find("a")
if company_anchor is not None:
company = str(company_anchor.string)
else:
company = str(company.string)
company = company.strip() # 1.2.3
else:
company = None
location = html.find("div", {"class": "recJobLoc"})["data-rc-loc"] # 1.2.4
job_id = html["data-jk"] # 1.2.5
return {
'title': title,
'company': company,
'location': location,
"link": f"https://kr.indeed.com/viewjob?jk={job_id}"
}
1.2.1 find最初の結果のみ表示1.2.2会社はありますか?
1.2.3文字列の文字を削除します.この場合、スペースで始まる文字を削除します<-スペースを削除します
1.2.4 data-rc-locの値.divのプロパティへのアクセス
1.2.5 htmlからdivのdata-jk値(=ジョブid)を取得する
1.3就職情報のリスト
def extract_jobs(last_page):
jobs = []
for page in range(last_page):
print(f"Scrapping Indeed: Page: {page}")
result = requests.get(f"{URL}&start={page*LIMIT}") # 1.3.1
soup = BeautifulSoup(result.text, "html.parser")
results = soup.find_all("div", {"class": "jobsearch-SerpJobCard"}) # 1.3.2
for result in results:
job = extract_job(result) # 1.3.3
jobs.append(job) # 1.3.4
return jobs
1.3.1ページ要求1.3.2 find allすべてのリストを取得する
1.3.3 extract job関数を呼び出すことによってhtmlパラメータを受信する.ここでhtmlはリクエスト結果を含む結果である.
1.3.4この関数はジョブを返し、ジョブという名前の配列に戻ります.
Reference
この問題について(Web Scrapper_02), 我々は、より多くの情報をここで見つけました https://velog.io/@rin0702/Web-Scrapper02テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol