【问题标题】:can we write another parse methon in same code for parsing data from newly generated url...?我们可以在相同的代码中编写另一个解析方法来解析来自新生成的 url 的数据...?
【发布时间】:2019-05-29 20:48:09
【问题描述】:

这是我的解析方法,它为我提供了 URL 列表,但在解析函数中,我想从另一个我生成的名为 parse_url 的 url 中提取数据? 怎么做...? 我对scrapy很陌生...请帮助我

def parse(self, response):
    base_url = "https://indiankanoon.org/"
    urlList=response.xpath('//div[@class="result_title"]/a/@href').extract()
    print("*********************Inside parse********************")
    time.sleep(5)
    for url in urlList:
    sepList = url.split('/')
    parse_url =base_url + 'doc' + '/' + sepList[2] + '/'
    fname=sepList[2]
    print('New Urls : {}\n The saved file name : {}.json'.format(parse_url, fname))

    for quote in response.css('div.judgments'):
        with open('datafile.json','w') as jfile:
            jfile.write(json.dumps({
                'Court': quote.css('div.docsource_main::text').extract(),
                'title': 'quote.xpath("//div[@class='judgments']/div[@class='doc_title']/text()").extract_first(),
                'subTitle': quote.css("div.judgments::text").extract_first(),
                'P_tags': quote.xpath("//div[@class='judgments']/p/text()").extract(),
                'Pre_tags': quote.xpath("//div[@class='judgments']/pre/text()").extract(),
                'blocked_quote': quote.xpath("//div[@class='judgments']/blockquote").extract()

                }))

enter code here

【问题讨论】:

  • 您能否更清楚地说明您要实现的目标以及代码中其他重要的部分。例如,您谈论您还需要帮助的parse_url 方法。把它也包括在内会很有用。
  • def get_urls(): URLS = [] # URL = "indiankanoon.org/search/…{start_date}%20todate%3A%20{end_date}&pagenum={num}" URL = "indiankanoon.org/search/…{start_date }%20todate%3A%20{end_date}&pagenum={num}" for i in range(0, 2): for d in fetch_all(): URLS.append(URL.format(start_date=get_first_day(d).strftime( '%d-%m-%Y'), end_date=get_last_day(d).strftime('%d-%m-%Y'), num=i)) 返回网址我正在获取网址列表
  • 请编辑您的原始帖子,而不是在 cmets 中提供有关您问题的额外详细信息。
  • 但是使用解析函数我正在创建名为 parse_url 的新 url,我想从该新 url 中删除数据,但我无法获取它。
  • 感谢您的建议

标签: python-2.7 scrapy scrapy-spider


【解决方案1】:

您可以按照here 的描述使用scrapy.Request(parse_url, callback=self.parse_result)parse_result 在获得新的响应后被调用,您可以在其中继续抓取。

【讨论】:

  • 是的,它奏效了。非常感谢,但我得到了大多数网站的 503 错误代码。你能建议一下吗..?
  • 如果您仍然可以从其他设备访问该页面,则您可能会被服务器阻止。尝试在发出每个请求之前添加wait()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-12
  • 2011-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-23
相关资源
最近更新 更多