我正试图在this webpage上抓取所有22个作业,然后从其他使用同一系统托管作业的公司那里抓取更多的作业。
我可以获得页面上的前10个作业,但其余的作业必须通过单击“Show more”按钮一次加载10个。当您这样做时,URL并没有改变,我能看到的唯一变化是在POST请求的有效负载中添加了一个令牌。
Image of Request Payload in Network tool
我已经尝试按照this stackexchange question和this one的答案进行操作,但仍然无法使其工作。
下面是我当前的代码:
def start_requests(self):
url = 'https://apply.workable.com/api/v3/accounts/so-energy/jobs'
headers = {'authority': 'https://apply.workable.com'}
payload = {
"token":"WzE2NjI2ODE2MDAwMDAsMjY0NTU4N10=",
"query":"",
"location":[],
"department":[],
"worktype":[],
"remote":[]}
yield scrapy.Request(url = url,
method='POST',
headers = headers,
body = json.dumps(payload),
callback = self.parse)
def parse(self, response):
data = json.loads(response.body)
print(data)
这给了我前10个工作,但不会更多。如果我删除有效载荷位,我得到的结果完全相同。
有什么想法吗?
(我对编程很陌生,这是我在这里的第一个问题,所以如果我错过了一些明显的东西,我道歉,但我已经尝试了几个小时。谢谢!)
1条答案
按热度按时间busg9geu1#
您需要从JSON中获取
nextPage
值,并在下一个页面的有效负载中使用它。