<p>忽略“加载更多”按钮。</p>
<p>正如您所提到的,您可以使用url访问作业的所有页面。分析结果的第一页时,请从header元素中查找作业总数</p>
<pre><code><h1 class="search-results__title ">
268 jobs found
</h1>
</code></pre>
<p>该网站每页显示20个作业,因此您需要刮取268/20=13.4(四舍五入到14)页。</p>
<p>解析完第一个页面后,创建一个生成器以生成后续页面的url(最多14个循环),并使用另一个函数解析结果。您将需要<code>searchId</code>,您无法从URL中获取,但它位于页面上的隐藏字段中。</p>
<pre><code><input type="hidden" name="searchId" value="1509738711.5142">
</code></pre>
<p>使用这个和页码,你可以建立你的网址</p>
<pre><code>https://jobs.et/jobs/?searchId=<id>&action=search&page=<page>
</code></pre>
<p>是的,parse函数的工作方式与第一页解析器完全相同,但是当您完成所有工作时,最好使用代码复制来保持头脑清醒。</p>
<p>代码可能是</p>
<pre><code>class JobsetSpider(CrawlSpider):
...
start_urls = ['https://jobs.et/jobs/']
...
def parse(self, response):
# parse the page of jobs
...
job_count = xpath(...)
search_id = xpath(...)
pages = math.ceil(job_count / 20.0)
for page in range(2, pages):
url = 'https://jobs.et/jobs/?searchId={}&action=search&page={}'.format(search_id, page)
yield Request(url, callback = self.parseNextPage)
def parseNextPage(self, response):
# parse the next and subsequent pages of jobs
...
</code></pre>