【问题标题】:is there any way to handle when href = '#' in scrapy?当href ='#'在scrapy中时有什么方法可以处理?
【发布时间】:2020-03-03 06:34:21
【问题描述】:

在从名为 timesjob 的网站上抓取所有内容时,我无法访问该网站的下一页,因为页面国家类中的 href 显示为 href = '#' ,在这里我无法访问此类超链接。所以我无法从所有页面中抓取数据。有没有办法解决获取确切超链接的问题,如果有,请回答。谢谢。 我试图访问的链接是https://www.timesjobs.com/candidate/job-search.html?searchType=personalizedSearch&from=submit&txtKeywords=python&txtLocation=bangalore

【问题讨论】:

  • 我刚刚弄清楚了他们的分页系统。他们不使用起始页......他们使用序列变量。像我一样将每页的结果设置为 1000,并将序列设置为您想要的页面。成功后请接受我的回答。谢谢

标签: python web-scraping scrapy


【解决方案1】:

值得注意的是,您还可以使用结果大小。我很幸运在这里的一页上获得了 1000 个。这可能会对您有很大帮助。我尝试了 3400,但它失败了,你必须尝试找出限制。无论哪种方式,这都会使您的任务变得更容易。

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=2&startPage=1

这并不能解决导航到 # 的问题,但它确实解决了抓取所有结果的问题。另外,请注意起始页始终保持为 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)

【讨论】:

    【解决方案2】:

    您需要调试一下在发出分页请求时正在执行的操作。 站点没有为下一页存储href,因为它是在运行时生成的动态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
    

    在主页上时,您需要确定页面源中存在的页面总数,然后生成这些请求的列表并点击它们。您也将从分页中获取所有数据

    【讨论】:

    • 在起始页面中可用的页面数为 10,如果我想加载更多页面,我需要再次单击 next10pages 选项,这又是一个动态创建的选项,所以请帮助我一个解决方案。
    • 我观察了他们的逻辑,但似乎他们一直在提供选项,在这种情况下,您必须使用循环生成请求,直到您没有遇到 404 这会限制您的分页范围跨度>
    • 我投了反对票,因为我能够解决问题并制定解决方案来抓取所有结果。这里的秘诀是使用每页结果来获得 1000 个结果,并且 startPage 变量是一个虚拟变量,真正的分页变量是序列。您可以使用序列 1,2,3,4 对 4 页进行分页
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    • 2018-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多