我正在处理一个小型数据抓取项目,并希望从网站https://www.germanystartupjobs.com/
获取所有工作。作业将作为POST请求加载。我可以进入各个页面并获取POST
请求的cURL并在终端中播放并获得一些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页,第一页的链接为https://www.germanystartupjobs.com/
,其余页面具有相同的链接https://www.germanystartupjobs.com/#s=1
。因此,您无法根据链接确定您所在的页面:可能是3或9我只是不知道。
总结一下这个问题,我会使用Python获得所有17个页面的html = data['html']
值,其中我只有2个网络链接:https://www.germanystartupjobs.com/
和https://www.germanystartupjobs.com/#s=1
?
答案 0 :(得分:1)
如果查看网络面板中的POST
- 标签,您应该会看到请求的不同参数。您所在的页面位于此选项卡中。
您可以在请求中传递此参数(因此在yield scrapy.Request
中),以便循环显示页码,并将其传递给您的请求。例如,您可以执行一个请求获取JSON对象中的最大页码(max_num_pages
),然后逐步传递页码,直到您请求每个页码。
查看documentation个请求。