私はスクレイピングに不慣れです。ポジションで構成されるジョブベースのサイトをスクレイピングしています。つまり、ポジションをクリックすると、フェッチする必要のあるデータで構成される新しいページが開きます。
たとえば、ページには次の形式のテーブルが含まれています。
Job Title Full/Part Time Location/Affiliates
1. Accountant Full Time Mount Sinai Medical Center (Manhattan)
2. Accountant Full Time Mount Sinai Medical Center (Manhattan)
3. Admin Assistant Full Time Mount Sinai Hospital (Queens)
4. Administrative Assistant Full Time Mount Sinai Medical Center (Manhattan)
Page: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
上記のすべての役職はjavascriptで生成されたリンクです、値を含むすべてのjavascriptリンクを送信する必要があります(firebugを使用して検索)一度に複数のフォームを送信する方法、またはすべての役職リンクをループする1つのメソッドを作成する方法そのため、役職のすべてのリンクからデータを取得できます。
また、上記のすべてのページをページ分割する必要があります。2ページをクリックすると、同じテーブル形式でジョブの位置が異なるページが開きます。どのようにすれば、そのページをスクレイプでページ分割できますか。
私のコードは:
class MountSinaiSpider(BaseSpider):
name = "mountsinai"
allowed_domains = ["mountsinaicss.igreentree.com"]
start_urls = [
"https://mountsinaicss.igreentree.com/css_external/CSSPage_SearchAndBrowseJobs.ASP?T=20120517011617&",
]
# This method is for submitting starting page with some values for clicking "Find Jobs"
def parse(self, response):
return [FormRequest.from_response(response,
formdata={ "Type":"CSS","SRCH":"Search Jobs","InitURL":"CSSPage_SearchAndBrowseJobs.ASP","RetColsQS":"Requisition.Key¤Requisition.JobTitle¤Requisition.fk_Code_Full_Part¤[Requisition.fk_Code_Full_Part]OLD.Description(sysfk_Code_Full_PartDesc)¤Requisition.fk_Code_Location¤[Requisition.fk_Code_Location]OLD.Description(sysfk_Code_LocationDesc)¤Requisition.fk_Code_Dept¤[Requisition.fk_Code_Dept]OLD.Description(sysfk_Code_DeptDesc)¤Requisition.Req¤","RetColsGR":"Requisition.Key¤Requisition.JobTitle¤Requisition.fk_Code_Full_Part¤[Requisition.fk_Code_Full_Part]OLD.Description(sysfk_Code_Full_PartDesc)¤Requisition.fk_Code_Location¤[Requisition.fk_Code_Location]OLD.Description(sysfk_Code_LocationDesc)¤Requisition.fk_Code_Dept¤[Requisition.fk_Code_Dept]OLD.Description(sysfk_Code_DeptDesc)¤Requisition.Req¤","ResultSort":"" },
callback=self.parse_main_list)]
def parse_main_list(self, response):
return [FormRequest.from_response(response,
formdata={ "Key":"","Type":"CSS","InitPage":"1","InitURL":"CSSPage_SearchAndBrowseJobs.ASP","SRCH":"earch Jobs","Search":"ISNULL(Requisition.DatePostedExternal, '12/31/9999')¤BETWEEN 1/1/1753 AND Today¥","RetColsQS":"Requisition.Key¤Requisition.JobTitle¤Requisition.fk_Code_Full_Part¤[Requisition.fk_Code_Full_Part]OLD.Description(sysfk_Code_Full_PartDesc)¤Requisition.fk_Code_Location¤[Requisition.fk_Code_Location]OLD.Description(sysfk_Code_LocationDesc)¤Requisition.fk_Code_Dept¤[Requisition.fk_Code_Dept]OLD.Description(sysfk_Code_DeptDesc)¤Requisition.Req¤","RetColsGR":"Requisition.Key¤Requisition.JobTitle¤Requisition.fk_Code_Full_Part¤[Requisition.fk_Code_Full_Part]OLD.Description(sysfk_Code_Full_PartDesc)¤Requisition.fk_Code_Location¤[Requisition.fk_Code_Location]OLD.Description(sysfk_Code_LocationDesc)¤Requisition.fk_Code_Dept¤[Requisition.fk_Code_Dept]OLD.Description(sysfk_Code_DeptDesc)¤Requisition.Req¤","ResultSort":"[sysfk_Code_Full_PartDesc]" },
dont_click = True,
callback=self.parse_fir_pag_urls)]
def parse_fir_pag_urls(self, response):
print response'