在从名为Timesjob的网站上抓取所有内容时,由于页面国家类别中的href显示为 href ='#',我无法访问网站的下一页,在这里我无法访问此类超链接。因此,我无法从所有页面上抓取数据,是否有任何方法可以解决获取确切超链接的问题,请回答。谢谢。 我尝试访问的链接是https://www.timesjobs.com/candidate/job-search.html?searchType=personalizedSearch&from=submit&txtKeywords=python&txtLocation=bangalore
答案 0 :(得分:1)
您需要调试一下发出分页请求时正在执行的操作。
网站没有为下一页存储hrefs,因为它是在运行时生成的动态URL。
我为page 7
测试了它,这是创建的链接
https://www.timesjobs.com/candidate/job-search.html?from=submit&actualTxtKeywords=python&searchBy=0&rdoOperator=OR&searchType=personalizedSearch&txtLocation=bangalore&luceneResultSize=25&postWeek=60&txtKeywords=python&pDate=I&sequence=7&startPage=1
在主页上时,您需要确定页面源中存在的页面总数,然后生成这些请求的列表并点击它们。您还将从分页中获取所有数据
答案 1 :(得分:1)
值得注意的是,您也可以使用结果大小。我很幸运在这里一页上获得1000。这可能会对您有很大帮助。我尝试了3400,但失败了,您必须尝试找出限制。无论哪种方式,这对您来说都将使这项工作变得容易得多。
这不能解决导航到#的问题,但是可以解决抓取所有结果的问题。另外,请注意,起始页始终保持为1,并且使用序列变量进行分页。
start_urls = ['https://www.timesjobs.com/candidate/job-search.html?from=submit&actualTxtKeywords=python&searchBy=0&rdoOperator=OR&searchType=personalizedSearch&txtLocation=bangalore&luceneResultSize=1000&postWeek=60&txtKeywords=python&pDate=I&sequence={}&startPage=1']
def start_requests(self):
for i in range(1, 4):
yield scrapy.Request(self.start_urls[0].format(i), callback=self.parse)