我正在进行一个小的数据抓取项目,并希望从https://www.germanystartupjobs.com/网站获得所有的工作。这些作业作为POST请求加载。我可以进入各个页面,获取POST请求的POST,并在终端中播放,并获得一些JSON。我得到的JSON格式如下(我提供了从Firefox network tab获得的内容,cURL在终端中也提供了相同的格式),

现在,我所需要的是html tag内部的内容,我可以使用代码片段在相应页面上的href上迭代,
html = data['html']
selector = scrapy.Selector(text=data['html'], type="html")
hrefs = selector.xpath('//a/@href').extract()
for href in hrefs:
// some code 我使用scrapy,约定是使用start_urls列表来抓取页面,然后,我可以以我喜欢的方式将所有代码放入parse函数中。
这是另一个问题。在各自的网站中,有17页,第1页的链接是https://www.germanystartupjobs.com/,其余的页面有相同的链接https://www.germanystartupjobs.com/#s=1。因此,您不能根据链接来真正判断您所在的页面:可以是3或9,我只是不知道。
总结一下这个问题,我会用html = data['html']得到所有17页的https://www.germanystartupjobs.com/值吗?这里只有两个web链接:https://www.germanystartupjobs.com/和https://www.germanystartupjobs.com/#s=1?
发布于 2016-12-19 08:09:44
如果您查看网络面板中的POST-tab,您应该会看到请求的不同参数。你上的那一页在这个标签上。
您可以在请求中传递此参数(在yield scrapy.Request中也是如此),以便循环页号,将其传递到请求中。例如,您可以执行一个请求,获得最大页码(JSON-对象中的max_num_pages),然后递增地传递页面号,直到您请求其中的每一个。
查看请求上的文档。
https://stackoverflow.com/questions/41207967
复制相似问题